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作为第二个参数传递将json_decode使它返回一个关联数组。

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

于 2013-05-09T20:39:39.270 回答
0

您需要将您的 javascript 数组转换为字符串,因为这就是post()方法所接受的全部内容。大多数人通过将他们的数组转换为 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 回答