2013-01-06 36 views
0

我有创造这样的阵列或一个javascript对象: arr[arr.length]=obj 其中obj是一个经典JSON字符串等{"id":1}。因此arr似乎是JavaScript对象的数组。javascript对象到PHP使用jquery AJAX

我可以像这样访问它: arr[1]arr[2]。 它可能甚至像alert(arr[1].id);

如果我这样做: alert(JSON.stringify(arr)); 我得到如下:

[{"id":"2305","col":"1"},{"id":"2308","col":"1"},{"id":"2307","col":"1"},{"id":"2306","col":"1"}] 

而 警报(ARR); 给了我这样的:

[object Object],[object Object],[object Object],[object Object],[object Object] 

现在我需要它传递给使用jQuery的AJAX方法的PHP脚本。但它似乎只能得到合并,例如字符串:

{"id":"2305","col":"1"}{"id":"2305","col":"1","id":"2305","col":"1"}

但JSON.stringify成功解析改编对象和我以前的字符串我有一个例子似乎是一个有效的JSON字符串。我怎样才能传递给PHP,我是否真的应该将整个格式的结构更改为最后一个样本?

UPD: 如果发送'{},{},{}'字符串而不是'{}'字符串,我忘了提及PHP的POST数组为空。

UPD: 我重写了生成字符串的代码。现在我有一个像这样的字符串:

{"2305":"1","2306":"1"} 

它的工作原理,如果我把它传递给PHP直接,就像这样:

$.post({url: '../getItems2Cart.php', data:{"2305":"1","2306":"1"} , 
     success: function(response){alert(response);} 
    }); 

如果我把它这样,PHP返回空POST数组:

$.post({url: '../getItems2Cart.php', data: JSON.stringify(str),. 
     success: function(response){alert(response);} 
}); 

得到清晰,警报现在返回正确的JSON强:

alert('json str to php '+JSON.stringify(str)); 
//json str to php {"2305":"1","2306":"1"} 

啊..是的,str是一个JavaScript对象,不是字符串。

回答

5

可以发送JSON并使用json_decode()将它变成一个php数组。

$.post('server/path', { jsonData: JSON.stringify(arr)}, function(response){ 
    /* do something with response if needed*/ 
}); 
在PHP

$arr=json_decode($_POST['jsonData']); 
/* return first ID as test*/ 
echo $arr[0]['id']; 
/* or dump whole array as response to ajax:*/ 
print_r($arr); 
+0

对不起,我忘了一提的是PHP的POST数组为null,如果发送{},{},{}串到它而不是{}字符串。 – user1953035

+0

不清楚您发送的内容。如果它在'我得到以下内容'后匹配代码:'有问题应该可以正常工作。我不明白“{},{},{}”和“{}”的含义。首先应该是一个数组''{,{},{}]' – charlietfl

+0

我已经更新了该问题,请检查它 – user1953035