0

次のように、Jqueryを使用して配列をHTMLフォームに渡そうとしています。

$('form#'+ID1+' input#myArray').val(theArray);

すると私のフォームは次のようになります

<input type="hidden" id="myArray" name="myArray"> 

次に、Ajaxリクエストを呼び出す前にシリアル化します。

var dataString=$('form#grid1').serialize();

しかし、受信スクリプトでは、次のようになります。

Uninitialized string offset: 1

何か案は?

ありがとう!

4

1 に答える 1

1

これがあなたが質問に示しているものからの私の最良の推測です。

以下を呼び出すと、で表される配列theArrayはコンマ区切りの文字列に変換され、非表示の入力要素に配置されます。これは、theArrayがネストされた配列であっても当てはまります。

$('form#'+ID1+' input#myArray').val(theArray);

ただし、サーバーでは、投稿された「myArray」値を配列として処理しようとしているため、次のエラーが発生します。

Uninitialized string offset: 1

問題は、「myArray」が配列ではなく、コンマ区切りの文字列であるということです。

theArray特にネストされた配列の場合は、値を非表示の入力要素に設定する前に、値をJSONとしてフォーマットすることをお勧めします。あなたはこれを行うことができます:

$('form#'+ID1+' input#myArray').val(JSON.stringify(theArray));

次に、サーバー側のオブジェクトに解析します。エラーメッセージからPHPを使用していると推測しているので、次のようにします。

$myArray = json_decode($_POST['myArray']);
于 2013-03-25T20:41:38.837 に答える