длина равна нулю или нет объекта?IE 8 - PullRequest
7 голосов
/ 19 июля 2010

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

11 голосов
/ 20 июля 2010

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

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

Давай, банда, это было очевидно: -)

1 голос
/ 20 июля 2010

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

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

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

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

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

1 голос
/ 20 июля 2010

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

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

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

0 голосов
/ 19 июля 2010

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

0 голосов
/ 19 июля 2010

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

0 голосов
/ 19 июля 2010

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

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

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

({
    "foo": [] 
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...