Цикл по объекту JSON, содержащему массив объектов - PullRequest
1 голос
/ 29 июня 2011

очень надеюсь, что кто-то может помочь мне с этим, это сводит меня с ума ...

У меня есть объект JSON с источником:

[{"description":"General Accessories & Parts","id":"1"},{"description":"General Parts","id":"2"},{"description":"Parts","id":"3"}]

Это массив, возвращенный из PHP, раньше это выглядело так:

$array[0]['description']="General Accessories & Parts";
$array[0]['id']="1";

$array[1]['description']="General Parts";
$array[1]['id']="2";

etc...

Итак, я поместил массив в свой код JavaScript:

obj=eval(ajax.responseText);

Теперь мне нужно перебрать описание и идентификатор для каждого элементав массиве я попробовал это:

for(var key in obj){
    if(!obj[key].hasOwnProperty(key)) continue;

    alert(obj[key]['description']);
}

Приведенный выше код, который я пробовал, просто echos [object Object],[object Object],[object Object], то есть 3 объекта, которые, как я знаю, существуют.

Ответы [ 3 ]

0 голосов
/ 29 июня 2011

странный код: if (! Obj [ключ] .hasOwnProperty (ключ))

в вашем случае переменная ключа будет повторять значения 0, 1, 2

и вы запросите obj [0] .hasOwnProperty (0)

0 голосов
/ 29 июня 2011

Я не могу действительно продублировать ваш ответ, но я почти уверен, что проблема заключается либо в а) в вашем тексте ответа (есть ли шанс, что мы сможем получить уведомление о точном выводе?), Либо в) в вашем цикле for ( вы перебираете массив, поэтому не должен иметь собственное свойство):

var a = [{"description":"General Accessories & Parts","id":"1"},
         {"description":"General Parts","id":"2"},
         {"description":"Parts","id":"3"}];
var b = JSON.stringify(a);
eval("var c = " + b);
for (var i = 0; i < c.length; i++) {
  alert(c[i].description); // alert the three values you want
}
0 голосов
/ 29 июня 2011

Используйте

alert( obj[0].description );

, а не

alert( obj[0]['description'] );

Быстрый пример: http://jsfiddle.net/W4dwx/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...