複数選択の選択された値を使用して、javascript で構築された配列を送信したいと考えています。この配列をajaxを使用してphpスクリプトに送信する方法はありますか?
6 に答える
jQuery の $.post メソッドでそれを行うことができます (たとえば):
var myJavascriptArray = new Array('jj', 'kk', 'oo');
$.post('urltocallinajax', {'myphpvariable[]': myJavascriptArray }, function(data){
// do something with received data!
});
PHP は、 myphpvariableという名前の配列を受け取り、myJavascriptArray 値を含みます。
あれですか?
XML または JSON を使用してサーバーにポストバックできます。JavaScript で投稿を作成する必要がありますが、XML の場合は JavaScript で作成する必要があります。JSON は軽量であるだけでなく、javascript で簡単に作成できます。JSON の解析については、JSON-PHPを確認してください。
PHP での JSON データの作成を参照してください。
IIRC では、PHP が のようなクエリ文字列を検出すると、foo、bar、および baz を含むhttp://blah.com/test.php?var[]=foo&var[]=bar&var[]=baz
という配列を自動的に作成します。$var
クエリ文字列の角かっこで配列インデックスを指定することもできると思います。そのインデックスに値が貼り付けられます。括弧を URL エンコードする必要があるかもしれません... この機能の通常の使用方法は、"var[]" という名前の HTML 入力フィールドを作成することなので、ブラウザがそこで通常行うことをそのまま行ってください。PHP ドキュメントには、リクエストによる配列変数に関するセクションがあります。
データをシリアライズ(jQuery バージョン)する方法を探しているかもしれません。
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
Meador が推奨するように、配列を作成して送信できます: (次のコードは Mootooled ですが、他のライブラリ/プレーンな古い JS と同様です)
myArray.each(function(item, index) myObject.set('arrayItems['+index+']', item);
myAjax.send(myObject.toQueryString());
これにより、$_POST['arrayItems'] でアクセスできる arrayItems という配列が php に送信されます。
echo $_POST['arrayItems'] ;
次のようなエコーが返されます: array=>{[0]=>'first thing', [1]=> second thing}