将发布请求数据转换为.each()函数

时间:2012-01-21 00:47:16

标签: javascript arrays each

我正在使用此代码

$.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并不是最好的,所以非常感谢所有的帮助。

3 个答案:

答案 0 :(得分:1)

data[57,49]”是什么意思?

我的猜测是,你期望一个(JSON)对象,但你只是收到一个字符串。我的第二个猜测是jQuery以错误的方式解释结果,并且不将返回标识为JSON-String,因此不隐式JSON.parse

检查请求的内容类型。尝试在调用data = JSON.parse(data);循环之前手动调用each。实际上jQuery应该能够将该字符串标识为JSON结果本身,所以我也想知道你使用哪个jQuery版本。

您可能需要的另一个镜头是直接拨打.getJSON()而不是.post()

答案 1 :(得分:0)

您可以使用JSON.parseeval('('+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");