Эй парни, быстрый вопрос, я получаю следующую ошибку 'длина, является пустым или не объект' в 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;
}
});
}
Просто проверьте, не является ли объект null или пустым:
if (json && json.length) {
// ...
}
C'mon gang это было очевидно :-)
Объекты JSON (возвращенные jQuery или иным образом) не имеют свойства length
. Скорее всего, вам нужно будет перебирать свойства или знать структуру и просто вытащить то, что вы хотите:
$.getJSON( ..., ..., function( json ) {
for( var prop in json ) {
if( !json.hasOwnProperty( prop ) ) { return; }
alert( prop + " : " + json[prop] );
}
} );
В качестве альтернативы возьмите библиотеку, например json2 , и вы сможете структурировать объект для вывода / отладки.
Как выглядит возвращенный вами JSON? Если вы возвращаете объект, длина может быть не определена явно, тогда как если вы возвращаете массив, она должна определяться автоматически.
Первое, что приходит на ум, - это то, что длина не является свойством того, чем является json. Какой должна быть переменная json?
JSON - это объект, вы, кажется, относитесь к нему как к массиву. У него действительно есть свойство length
? Покажите нам JSON?
Вместо этого вам может потребоваться использовать для..in
.
РЕДАКТИРОВАТЬ: Можете ли вы сделать JSON из внутренней структуры таким образом?
({
"foo": []
})
вставьте JSON в диапазон, затем обрежьте его и вставьте сюда, чтобы мы могли его увидеть:
<span id="JSObject2">empty</span>
с json2.js отсюда: (ссылка на него внизу страницы) http: // www.json.org/js.html
myJSON = JSON.stringify(json);
$('#JSObject2').text(myJSON);
Используя это, мы можем помочь вам лучше, и вы сможете увидеть, что у вас есть!