我有一个像这样创建的数组或javascript对象:arr[arr.length]=obj 其中obj是像这样 的经典JSON字符串{"id":1}。
arr[arr.length]=obj
{"id":1}
因此arr似乎是一个JavaScript对象数组。
arr
我可以这样访问它: arr[1],arr[2]。甚至可能像alert(arr[1].id);
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"}]
而警报(警报);给我类似的东西:
[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"}
{"id":"2305","col":"1"}
{"id":"2305","col":"1","id":"2305","col":"1"}
但是JSON.stringify成功解析了arr对象,而我之前的字符串示例似乎是有效的JSON字符串。如何传递给PHP,我是否应该真正将结构的整个格式更改为上一个示例?
UPD:我忘了提到,如果向其发送’{},{},{}’字符串而不是’{}’字符串,则PHP的POST数组为null。
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);} });
为了清楚起见,alert现在会返回适当的JSON强度:
alert('json str to php '+JSON.stringify(str)); //json str to php {"2305":"1","2306":"1"}
嗯..是的,str是一个JavaScript对象,而不是字符串。
可以发送JSON并将其用于json_decode()将其转换为php数组。
json_decode()
$.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);