使用jQuery$.each,Json错误,结果为1
Using jQuery $.each with Json erroring with 1 result
基本上,我将JSON结果转换为html,并使用$.each迭代多个键。例如,我撤回了脸书上的帖子,并在帖子中反复点赞。
问题在于,当有多个"赞"时,一切都很好!尽管当只有1个"like"时,"source"键会从结果集中删除,并且我的javascript会中断,因为我希望它在那里。知道为什么$.each为单个节点跳过一个级别吗?以下是我的代码:
*JQUERY**
$.each(post.likes.item, function(i, like){
$(currentpost).find('div.cc_likes').append(like + ',');
console.log(like)
});
*JSON RESULT**
*类单
likes": {
"item": {
"source": {
"cta": "Mary Smith",
"url": "http:'/'/www.facebook.com'/",
"photo": {
"image": "https:'/'/graph.facebook.com'/"
}
}
},
控制台中的结果:
Object
cta: "MaryAnn Smith"
photo: Object
url: "http://www.facebook.com/"
*多次点赞
"likes": {
"item": [
{
"source": {
"cta": "Bobby Carnes Sr.",
"url": "http:'/'/www.facebook.com",
"photo": {
"image": "https:'/'/graph.facebook.com'"
}
}
},
{
"source": {
"cta": "Jenna Purdy",
"url": "http:'/'/www.facebook.com'",
"photo": {
"image": "https:'/'/graph.facebook.com'"
}
}
},
{
"source": {
"cta": "Kevin Say",
"url": "http:'/'/www.facebook.com'",
"photo": {
"image": "https:'/'/graph.facebook.com'"
}
}
}
],
"count": "10",
"count_display": "10"
},
控制台中的结果:
Object
source: Object
cta: "Kevin Smith"
photo: Object
url: "http://www.facebook.com/"
由于$.each()
需要一个数组或类似数组的对象作为参数,在使用对象post.likes.item
之前,请检查它是否是非的数组。以下代码将始终向jQuery-传递一个数组
$.each([].concat(post.likes.item), function(i, like){
$(currentpost).find('div.cc_likes').append(like + ',');
console.log(like)
});
解释
[]
在JavaScript中是一个空数组。JavaScript中的每个数组都有一个concat
方法。
CCD_ 5将CCD_。
- 若
obj
不是数组,则结果为[obj]
,它是一个包含一个项的数组 - 若
obj
是一个数组,那个么结果就是obj
的深度拷贝,它已经是一个阵列了
有关concat方法的更多信息
if ( isArray ) {
for ( ; i < length; i++ ) {
value = callback.call( obj[ i ], i, obj[ i ] );
if ( value === false ) {
break;
}
}
} else {
for ( i in obj ) {
value = callback.call( obj[ i ], i, obj[ i ] );
if ( value === false ) {
break;
}
}
}
这是在JSON返回中运行的jquery代码。实际情况是,当您查看多个结果时,它会在数组中循环,返回每个基本级别的对象。但是,当您在单个返回上运行它时,它会循环通过对象属性(在本例中为"source"),并返回该属性的值。
你有两个选择。您可以确保单个项仍然放在数组中,也可以在客户端检查单个项。Moazzam Khan建议的方法在大多数情况下是最好的方法。
相关文章:
- 如何知道javascript for语句中的所有结果是否都是错误的
- JScript 错误: 无法分配给函数结果
- json-api和错误结果:无法读取属性'长度'的未定义
- 显示错误结果的Javascript
- javascript使用正则表达式得到错误的结果
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- 原型中漂亮的代码,如何省略'不是函数'空结果选择器上的错误
- 在JavaScript中解析日期时得到错误的结果
- YouTube API v3哈希标签搜索错误结果
- jQuery.Validate - 如何将错误结果放在不同的地方
- JavaScript 数学给出了完全错误的结果
- web programming_javascript:javascript中的Grade结果错误
- 用javascript解析json并显示结果错误
- nodejs, http请求,解析结果错误
- ionic FileTransfer不给出结果/错误/反馈,然后做成功函数
- 在Javascript页面中搜索-一个结果错误
- TypeError: Object没有方法'split'分割结果错误[0].geometry.locat
- OpenLayers EPSG900913- EPSG4326转换结果错误
- Extendscript Javascript计算结果错误
- 按子字符串过滤的结果错误