2016-05-17 10 views
1

私は入力の多い大きなフォームを持っています。 また、私はjavascriptの多次元配列を持っています。ショッピングカートとして追加したり削除したりするカスタムオブジェクトの配列です。 配列はローカルのJS変数として定義されています。 私はフォームを送信するときに、私も配列を渡す必要があり、私はそれを行う方法がわかりません。 私は例を残していますが、私のフォームとクラスははるかに複雑なので、これは単なる例です。JavascriptからPHPへの多次元配列でフォームを送信

<SCRIPT LANGUAGE="JavaScript"> 
var itemList = []; 

var CustomClass = function (id, description) { 
      this.id = id; 
      this.description = description; 
      }; 

function addItem(id, description) 
{ 
    var item = new CustomClass(id,description); 

    itemList.push(item); 
} 

</script> 

<form method="post" action="formSave.php"> 

<input type="text" name="someInput1"> 
<input type="text" name="someInput2"> 

<input type="submit" value="Submit"> 

</form> 

ありがとうございました。

答えて

1

フォームを使用してデータを送信するように設定されている場合、IDは非表示のテキスト入力を行い、をjsで使用し、サーバー側でjson_decodeサーバー側でデコードします。

<input id = 'jsValueHolder' style = 'display:none'> 
<script> 
    function loadJSDataBeforeSend(dataToSend){ 
     document.getElementById("jsValueHolder").value = JSON.stringify(dataToSend); 
    } 
    loadJSDataBeforeSend(itemList); 
</script> 

とサーバ側:

<?php 
    /* other code */ 
    $jsonDataString = ... // get your data from the input 
    $dataObject = json_decode($jsonDataString); 
    $dataKeyValueArray = json_decode($jsonDataString, true); 
?> 

注方法json_decode関数に真の添加は、キー値の配列ではなく、PHPのオブジェクトを返します。

+0

Excelent! stringifyメソッドを知ってはいけない。 Thankss !!! –

+0

@ martin.softproはあなたと同じ方法でそれを学んだ;) –