11

私が知っているように、ajaxを使用してサーバーにデータを送信できますが、XMLHttpRequestjQueryのようなライブラリを使用せずに投稿する配列を送信することについて混乱しています。私の質問は、配列をphpusingに送信することは可能ですXMLHttpRequestか、配列を php に送信する方法です。つまり、 jQueryjQuery は配列をサーバー (php $_POST) に送信するために追加の作業を行いますか?

4

4 に答える 4

16

バイト文字列以外は何も送信できません。「配列の送信」は、配列をシリアル化 (オブジェクトの文字列表現を作成) して送信することによって行われます。次に、サーバーは文字列を解析し、そこからメモリ内オブジェクトを再構築します。

したがって、PHP への送信[1,2,3]は次のようになります。

var a = [1,2,3],
    xmlhttp = new XMLHttpRequest;

xmlhttp.open( "POST", "test.php" );
xmlhttp.setRequestHeader( "Content-Type", "application/json" );
xmlhttp.send( '[1,2,3]' ); //Note that it's a string. 
                          //This manual step could have been replaced with JSON.stringify(a)

test.php:

$data = file_get_contents( "php://input" ); //$data is now the string '[1,2,3]';

$data = json_decode( $data ); //$data is now a php array array(1,2,3)

ところで、jQuery を使用すると、次のようになります。

$.post( "test.php", JSON.stringify(a) );
于 2012-08-23T17:33:45.547 に答える
1

これは、データ構造をパッケージ化するために選択したプロトコルによって異なります。最も一般的に使用される2つは、XMLとJSONです。どちらにも配列を宣言する方法があります。

JSON:['one thing', 'another thing']

XML:<things><thing name='one thing' /><thing name='another thing' /></things>

また、どちらもサーバーによる重要な追加作業を必要としません。多くの場合、それらを区別するために命名規則を使用する必要がないため、実際には作業が削減されます。

于 2012-08-23T17:26:57.343 に答える
0

jSon オブジェクト (配列の場合もあります) を送信します。php を使用している場合は、これを確認してくださいXMLHttpRequest w/o jQuery を使用して JSON データを PHP に送信します

json の詳細: http://json.org/

jQuery jSon サンプル: JQuery と JSON

于 2012-08-23T17:22:07.363 に答える