2010-11-11 5 views
1

Я пытаюсь предупредить id и подкатегорию в строке JSON, возвращаемой с сервера с помощью jQuery.Parse JSON с jQuery [2]

Я получаю следующую строку JSON.

[{"name":"Technology","id":117,"subcategory":"Machines"}, 
{"name":"Technology","id":118,"subcategory":"Tools"}, 
{"name":"Technology","id":119,"subcategory":"Air"}] 

я пытаюсь сделать:

$.getJSON("scene/getSubCategories/Technology", 
    { 
     format: "json" 
    }, 
    function(data) { 
     alert(data); 
     $.each(data.object, function(i,object){ 
      alert(object.id + " " +object.subcategory); 
     }); 
    }); 

Я получаю ошибку

Сообщение: 'Длина' равно нулю или не является объектом

Line: 12

Char: 7740

Код: 0

URI: http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js

Что я делаю неправильно?

Я использую jQuery 1.3.2, потому что у меня есть сторонний плагин JavaScript, который работает с этой версией jQuery, и я не могу понять, как обе версии (1.3.2 и 1.4.3) jQuery могут жить вместе на одной стороне.

ответ

3

Попробуйте это:

$.each(data, function(i,item){ 
    alert(item.id + " " +item.subcategory); 
}); 

Первый аргумент each() должен быть объектом перебрать. Это должны быть данные (данные не имеют свойства «объект»). Второй аргумент предоставленной функции будет текущим элементом итерированного объекта.

1

«Длина» является нулевым или нет объектом », потому что data.object не существует. Вы, вероятно, имел в виду, чтобы напечатать:

$.each(data, function(i,object) { 

вместо

$.each(data.object, function(i,object) { 

В качестве примечания, в вашем случае, вы можете использовать нативный JavaScript для цикла вместо $ .each:

for(var i = 0; i < data.length; i++) { 
    var object = data[i]; 
    ... 
} 
1

Второй параметр getJSON() должен быть функцией получения анализируемых данных. каждый() получает массив и передает в вашем случае индекс и значение элемента

$.getJSON("scene/getSubCategories/Technology", function(data) { 
    alert(data); 
    $.each(data, function(i, object){ 
      alert(object.id + " " +object.subcategory); 
    }); 
});