嘿伙计们快速提问我在IE 8中得到以下错误'长度为空或不是对象',任何人都有任何想法?反馈非常感谢...
function refresh() {
$.getJSON(files+"handler.php?action=view&load=update&time="+lastTimeInterval+"&username="+username+"&topic_id="+topic_id+"&t=" + (new Date()), function(json) {
if(json.length) {
for(i=0; i < json.length; i++) {
$('#list').prepend(prepare(json[i]));
$('#list-' + count).fadeIn(1500);
}
var j = i-1;
lastTimeInterval = json[j].timestamp;
}
});
}
答案 0 :(得分:11)
只检查对象为空或空:
if (json && json.length) {
// ...
}
很明显,C'mon帮这显然很明显: - )
答案 1 :(得分:1)
JSON对象(由jQuery或其他方式返回)没有length
属性。您需要迭代属性,最有可能,或者知道结构并简单地提取您想要的内容:
$.getJSON( ..., ..., function( json ) {
for( var prop in json ) {
if( !json.hasOwnProperty( prop ) ) { return; }
alert( prop + " : " + json[prop] );
}
} );
或者,抓取像json2这样的库,你就可以对该对象进行字符串化以进行输出/调试。
答案 2 :(得分:1)
在一个范围内弹出JSON,然后将其剪辑并粘贴到此处,以便我们可以看到它:
<span id="JSObject2">empty</span>
使用此处的json2.js :(页面底部的链接)http://www.json.org/js.html
myJSON = JSON.stringify(json);
$('#JSObject2').text(myJSON);
使用它,我们可以更好地帮助您,您可以看到您拥有的东西!
答案 3 :(得分:0)
JSON是一个对象,您似乎将其视为一个数组。它真的有length
属性吗?向我们展示JSON?
您可能需要使用for..in
代替。
({
"foo": []
})
答案 4 :(得分:0)
您返回的JSON是什么样的?如果您要返回一个对象,则可能不会显式定义长度,而如果您要返回一个数组,则应自动定义它。
答案 5 :(得分:0)
首先想到的是长度不是json的属性。无论如何,json变量应该是什么?