我正在使用此代码
$.post("assets/scripts/chat/load_convos.php",{}, function(data) {
$.each(data, function(index, value) {
alert(value);
});
,data
的返回值为[57,49]
,但它没有做任何事情......如果我在data
后面替换$.each(
使用[57,49]
可以使用,但不能使用data
。
我使用Javascript并不是最好的,所以非常感谢所有的帮助。
答案 0 :(得分:1)
“data
是[57,49]
”是什么意思?
我的猜测是,你期望一个(JSON)对象,但你只是收到一个字符串。我的第二个猜测是jQuery以错误的方式解释结果,并且不将返回标识为JSON-String,因此不隐式JSON.parse
。
检查请求的内容类型。尝试在调用data = JSON.parse(data);
循环之前手动调用each
。实际上jQuery应该能够将该字符串标识为JSON结果本身,所以我也想知道你使用哪个jQuery版本。
您可能需要的另一个镜头是直接拨打.getJSON()
而不是.post()
。
答案 1 :(得分:0)
您可以使用JSON.parse
或eval('('+response+')');
,但解决方案可能是指定jQuery或您使用的库,即响应是JSON。
顺便说一下,并非所有浏览器都有JSON对象,所以如果你的库没有提供它,你将不得不使用eval解决方案。
答案 2 :(得分:0)
指定json作为您的数据类型。
Taken from jquery.post documentation
Example: Posts to the test.php page and gets contents which has been
returned in json format
(<;?php echo json_encode(array("name"=>"John","time"=>"2pm")); ?>).
$.post("test.php", { "func": "getNameAndTime" },
function(data){
console.log(data.name); // John
console.log(data.time); // 2pm
}, "json");