我对某些getJSON
结果进行了每次方法调用:
if(data && data.query && data.query.results)
{
$.each(data.query.results.span, function(i, item)
{
console.log("Content:" + item.content); // FAILS --> UNDEFINED!!
});
}
我无法弄清楚为什么即使我看到JSON返回单个结果也不会显示任何内容。
所以我删除了每个并做了这个:
if(data && data.query && data.query.results)
{
console.log("Content:" + data.query.results.span.content); // WORKS!!
}
现在可行。
当只有一个结果时,是否无法使用each()
?
答案 0 :(得分:8)
$.each
期望第一个参数中有一个数组,如下所示:
$.each([ data.query.results.span ], function(i, item) { ... }
应该有效。方括号创建单个项目数组。
答案 1 :(得分:1)
如果$.each()
的第一个参数不是数组,那么它将遍历对象的属性(缺少更好的术语)。
例如:
var a = {first: "abc", second: "def"};
$.each(a, function(i, item){...});
传入$.each
的函数将被调用两次。第一次,我将是“第一次”,项目将是“abc”。第二次我将是“第二次”,项目将是“def”。
答案 2 :(得分:0)
如果集合已经是一个对象数组,则首先双重检查该集合。 如果没有,请将您自己嵌套的变量覆盖为对象数组:
if (MyCollection[0]==undefined) MyCollection = [MyCollection];
$.each(MyCollection, function (key,item) { ....