'length'是null还是不是对象? IE 8

时间:2010-07-19 19:43:17

标签: javascript jquery internet-explorer

嘿伙计们快速提问我在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;
    }
  });

}

6 个答案:

答案 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代替。

编辑:你能从后端结构中制作JSON吗?

({
    "foo": [] 
})

答案 4 :(得分:0)

您返回的JSON是什么样的?如果您要返回一个对象,则可能不会显式定义长度,而如果您要返回一个数组,则应自动定义它。

答案 5 :(得分:0)

首先想到的是长度不是json的属性。无论如何,json变量应该是什么?