下面是一个ajax调用返回的json:
{
"StumbleUpon": 0,
"Reddit": 0,
"Facebook": {
"commentsbox_count": 0,
"click_count": 0,
"total_count": 0,
"comment_count": 0,
"like_count": 0,
"share_count": 0
},
"Delicious": 0,
"GooglePlusOne": 1,
"Buzz": 0,
"Twitter": 1,
"Diggs": 0,
"Pinterest": 0,
"LinkedIn": 1
}我试图在jquery中处理它,但是由于我不能理解的某些原因,Facebook.total_count是未定义的。我希望不是这样,因为控制台告诉我收到了上面的json。此外,所有其他(data.Twitter等)工作。下面是产生错误的回调函数。我做错了什么?
function(data){
console.log(data);
//this line throws the error
var fb = data.Facebook;
var total = parseInt(data.Twitter + parseInt(fb.total_count) + data.GooglePlusOne + data.Pinterest + data.LinkedIn);
// rest of code.
}请参阅jsFiddle上的代码。
发布于 2012-07-24 21:07:15
从根本上说,只要data已经反序列化,就可以使用that code works。如果它没有,也没有...
对ajax调用的...add dataType: "JSON":
$.ajax({
// ...
dataType: "JSON",
// ...
});...or对结果使用$.parseJSON。
function(data) {
if (typeof data === "string") {
data = $.parseJSON(data);
}
// ...
}注意:您不需要对这些数字使用parseInt,它们已经是JSON中的数字,并且将被正确地反序列化。
发布于 2012-07-24 20:58:48
据我所知,您将JSON作为字符串接收,但没有将其解析为实际的对象。页面上的内容太多了,无法真正筛选并准确地告诉你,但这似乎是问题所在。试试jQuery.parseJSON
https://stackoverflow.com/questions/11631242
复制相似问题