'длина' является пустой или не объект? IE 8

Эй парни, быстрый вопрос, я получаю следующую ошибку 'длина, является пустым или не объект' в 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;
    }
  });

}
7
задан Scarface 19 July 2010 в 21:14
поделиться

6 ответов

Просто проверьте, не является ли объект null или пустым:

if (json && json.length) {
  // ...
}

C'mon gang это было очевидно :-)

11
ответ дан 6 December 2019 в 19:32
поделиться

Объекты JSON (возвращенные jQuery или иным образом) не имеют свойства length . Скорее всего, вам нужно будет перебирать свойства или знать структуру и просто вытащить то, что вы хотите:

$.getJSON( ..., ..., function( json ) {
  for( var prop in json ) {
    if( !json.hasOwnProperty( prop ) ) { return; }
    alert( prop + " : " + json[prop] );
  }
} );

В качестве альтернативы возьмите библиотеку, например json2 , и вы сможете структурировать объект для вывода / отладки.

1
ответ дан 6 December 2019 в 19:32
поделиться

Как выглядит возвращенный вами JSON? Если вы возвращаете объект, длина может быть не определена явно, тогда как если вы возвращаете массив, она должна определяться автоматически.

0
ответ дан 6 December 2019 в 19:32
поделиться

Первое, что приходит на ум, - это то, что длина не является свойством того, чем является json. Какой должна быть переменная json?

0
ответ дан 6 December 2019 в 19:32
поделиться

JSON - это объект, вы, кажется, относитесь к нему как к массиву. У него действительно есть свойство length ? Покажите нам JSON?

Вместо этого вам может потребоваться использовать для..in .

РЕДАКТИРОВАТЬ: Можете ли вы сделать JSON из внутренней структуры таким образом?

({
    "foo": [] 
})
0
ответ дан 6 December 2019 в 19:32
поделиться

вставьте JSON в диапазон, затем обрежьте его и вставьте сюда, чтобы мы могли его увидеть:

<span id="JSObject2">empty</span>

с json2.js отсюда: (ссылка на него внизу страницы) http: // www.json.org/js.html

myJSON = JSON.stringify(json);
$('#JSObject2').text(myJSON);

Используя это, мы можем помочь вам лучше, и вы сможете увидеть, что у вас есть!

1
ответ дан 6 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: