一連の要素(50〜200の任意の場所)を持つjavascript配列があるとします。
これをajaxを使用してPHP(準備済みステートメント)に送信します。現在、私は.load
ループ内で何度もphpファイルを作成しますが、それを配列に変換し、配列を1回送信して、50-200回ではなくPHPファイルを1回ロードします。
array[i] = variable;
JSON.stringify(array)
を使用してJavaScriptで配列をエンコードしてから、PHP)スクリプトで$array=json_decode($_POST['jsondata']);
を使用して取得できます。
AJAXリクエストはGETおよびPOST <form>
要素。つまり、$ _ GETと$ _POSTを使用してデータを取得できます。
AJAXリクエスト(jQueryの例)を作成する場合:
// JavaScript file
elements = [1, 2, 9, 15].join(',')
$.post('/test.php', {elements: elements})
このフォームを投稿することと(ほぼ)同等です:
<form action="/test.php" method="post">
<input type="text" name="elements" value="1,2,9,15">
</form>
どちらの場合でも、サーバー側では、$ _ POST変数からデータを読み取ることができます。
// test.php file
$elements = $_POST['elements'];
$elements = explode(',', $elements);
簡単にするために、ここでは要素をコンマで結合しています。ただし、JSONシリアル化はより普遍的なソリューションです。
次に、js配列またはオブジェクトをphp互換配列に変換して、http getリクエストパラメーターとして送信する関数を示します。
function obj2url(prefix, obj) {
var args=new Array();
if(typeof(obj) == 'object'){
for(var i in obj)
args[args.length]=any2url(prefix+'['+encodeURIComponent(i)+']', obj[i]);
}
else
args[args.length]=prefix+'='+encodeURIComponent(obj);
return args.join('&');
}
prefixはパラメータ名です。
編集:
var a = {
one: two,
three: four
};
alert('/script.php?'+obj2url('a', a));
生産します
/script.php?a[one]=two&a[three]=four
script.phpで配列として$ _GET ['a']を使用できるようになります。 jsからscript.phpを呼び出すためのURLを提供する際に、お気に入りのajaxエンジンへの道を考える必要があります。