【发布时间】:2012-12-20 11:12:57
【问题描述】:
我有一个像这样创建的数组或 javascript 对象:
arr[arr.length]=obj
其中 obj 是经典的 JSON 字符串,例如 {"id":1}。
所以arr 似乎是一个 JavaScript 对象数组。
我可以这样访问它:
arr[1],arr[2]。
甚至可以像alert(arr[1].id);
如果我这样做: 警报(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 成功地解析了 arr 对象,我之前的字符串示例似乎是一个有效的 JSON 字符串。我该如何传递给 PHP,我真的应该将整个结构格式更改为像上一个示例一样吗?
更新: 我忘了提到如果发送 '{},{},{}' 字符串而不是 '{}' 字符串,PHP 的 POST 数组为空。
更新: 我重写了生成字符串的代码。现在我有一个这样的字符串:
{"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 对象,而不是字符串。
【问题讨论】:
标签: php javascript jquery ajax json