1

JqueryのメソッドでJavaScriptからPHPに配列を送ろうとしています。$.post()

jQuery.serialize()、を試しましたがjQuery.serializeArray()JSON.stringify()すべてうまくいきませんでした。

これが私のコードです:

$.post("ajax/"+action+"_xml.php",{'array': array},function(data){console.log(data);});

配列は次のようになります。

array["type"]
array["vars"]["name"]
array["vars"]["email"]

array["vars"] に 2 つ以上の要素があります。

私のphp$_POST変数の結果は空の配列(長さ0)です。

4

3 に答える 3

1

渡すデータに次の構造を提案します。

Javascript:

var DTO = { 
    type: [1,2,3],
    vars: {  
        name: 'foo',
        email: 'foo@bar.com'
    }
};

var stringifiedData = JSON.stringify(DTO); 

// will result in:
//{"type":[1,2,3],"vars":{"name":"foo","email":"foo@bar.com"}} 

$.post("ajax/"+action+"_xml.php",{'DTO': stringifiedData },function(data){
    console.log(data);
});

PHP:

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

$DTO = $_POST['DTO'];

if(isset($DTO))
{
    $assocResult = json_decode($DTO, true);
    var_dump($assocResult); //do stuff with $assocResult here
}

trueの 2 番目の引数として渡すとjson_decode、連想配列が返されます。

http://php.net/manual/en/function.json-decode.php

于 2013-05-09T20:39:39.270 に答える
0

post()メソッドが受け入れるのはこれだけなので、JavaScript 配列を文字列に変換する必要があります。ほとんどの人は、配列を JSON に変換することでこれを行います。

于 2013-05-09T20:41:51.380 に答える
0

そのような配列を投稿できるかどうかはわかりません。

それを分割するとうまくいくはずです:

$.post("ajax/"+action+"_xml.php",{'type': array["type"], 'name' : array["vars"]["name"],...},function(data){console.log(data);});
于 2013-05-09T20:40:03.913 に答える