web-dev-qa-db-ja.com

Ajaxを介してPHPに配列を送信するにはどうすればよいですか?

複数選択の選択された値を使用してJavaScriptで構築された配列を送信したい。この配列をajaxを使用してphpスクリプトに送信する方法はありますか?

25
Lucia

XMLまたはJSONを使用してサーバーにポストバックできます。 JavaScriptは投稿を作成する必要があります。XMLの場合は、JavaScriptで作成する必要があります。 JSONは軽量であるだけでなく、JavaScriptで作成するのも簡単です。 JSONの解析については JSON-PHP を確認してください。

PHPでのJSONデータの作成 をご覧ください。

18
csexton

たとえば、jQueryの$ .postメソッドを使用すると、次のようになります。

var myJavascriptArray = new Array('jj', 'kk', 'oo');

$.post('urltocallinajax', {'myphpvariable[]': myJavascriptArray }, function(data){
   // do something with received data!
});

PHPはmyphpvariableという名前の配列を受け取り、myJavascriptArray値を含みます。

あれ?

26
Dragouf

IIRC、PHPがhttp://blah.com/test.php?var[]=foo&var[]=bar&var[]=bazのようなクエリ文字列を見つけると、foo、bar、bazを含む$varという配列が自動的に作成されます。クエリ文字列の角かっこで配列のインデックスを指定すると、そのインデックスの値が固定されます。角かっこをURLエンコードする必要がある場合があります...この機能を使用する通常の方法は、 "var []"という名前なので、ブラウザが通常行うことをすべて実行します。PHPのドキュメントには、リクエストによる配列変数に関するセクションがあります。

3
rmeador

データを Serialize (jQueryバージョン)する方法を探している可能性があります。

1
charlesbridge

jQuery 1.4 は、PHP構文を使用して配列を送信する構文を使用するように更新されました。次のコマンドを使用して、古いスタイルに切り替えることができます。

ここにシナタックスがあります:

jQuery.ajaxSetting.traditional = true;

ここに例があります

$.ajax({    
 traditional: true,
 type: "post",
 url: myURL,
 dataType: "text", 
 data: dataToSend, //this will be an array eg. 
 success: function(request) {
  $('#results').html(request);
 }  // End success
 }); // End ajax method
1
kishanio

Meadorが推奨するように、配列を作成して送信できます(次のコードはMootooledですが、他のライブラリでも同様です/旧式のJS)

myArray.each(function(item, index)  myObject.set('arrayItems['+index+']', item);
myAjax.send(myObject.toQueryString());

これにより、phpにarrayItemsと呼ばれる配列が送信され、$ _ POST ['arrayItems']を介してアクセスできます。

echo $_POST['arrayItems'] ; 

次のようなエコーが返されます:array => {[0] => '最初のもの'、[1] => 2番目のもの}

0
user52903