2012-01-21 16 views
0

我使用这个代码谈到POST请求的数据。每到()函数

$.post("assets/scripts/chat/load_convos.php",{}, function(data) { 
$.each(data, function(index, value) { 
    alert(value); 
}); 

,并data的回报[57,49]但它只是没有做任何事情......如果我更换data只是在$.each([57,49]它的作品,但不是data代替它。

我不是所有的帮助,很感激。

回答

1

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

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

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

另一种可能的情况是直接拨打.getJSON()而不是.post()

0

您可以使用JSON.parseeval('('+response+')');但可能解决的办法是指定jQuery或您使用的库的响应是JSON。

顺便说一句,没有所有的浏览器都有JSON对象,所以如果你的库没有提供它,你将不得不使用eval解决方案。

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");