Как перебрать элемент объектов JSON? - PullRequest
1 голос
/ 22 ноября 2010

Я очень новичок в игре с JSON.Мне нужно перебрать JSON-ответ от AJAX, на самом деле, я получаю значения checkboxe из таблицы db в форме на 2,3,7,9,3.Теперь я застрял с итерацией для каждого числа.

Если вы запустите следующий код в области консоли FF, вы заметите, что он зацикливается на каждом числовом, а НЕ ЗНАЧЕНИИ.

Пожалуйста, направьте меня.

var srv = {"services":"26,29"};

jQuery.each( srv.services, function(i, v) {
    console.log( v );
});

Любая помощь будет оценена.Спасибо:)

Ответы [ 4 ]

7 голосов
/ 22 ноября 2010

srv.services - это строка значений, разделенных запятыми, поэтому $.each() не будет работать правильно. Вы можете split () сделать его массивом, хотя:

var srv = {"services":"26,29"};

jQuery.each(srv.services.split(","), function(i, v) {
    console.log( v );
});

Рабочая демоверсия: http://jsfiddle.net/AndyE/veP4p/

Вы также можете сделать так, чтобы ваша служба JSON возвращала массив вместо строки, например, {"services":[26, 29]}. Это будет сделано для вас автоматически на сервере, если вы используете надлежащие JSON-совместимые методы для кодирования и если данные являются массивом.

1 голос
/ 22 ноября 2010

это недопустимый массив json, ваши данные json должны быть примерно такими:

var srv = {"services": ["26", "29"]};

.. или потому что вы можете разделить свои строковые данные с помощью функции js split:

jQuery.each(srv.services.split(","), function(i, v) {
    console.log( v );
});
0 голосов
/ 22 ноября 2010

Сначала нужно создать массив

var srv = {"services":"26,29".split(",")};

jQuery.each( srv.services, function(i, v) {
    console.log( v );
});
0 голосов
/ 22 ноября 2010

Не уверен, что это ответ на вашу проблему, но, учитывая объявление выше, попробуйте разбить на , перед повторением:

var srv = {"services":"26,29"};

jQuery.each( srv.services.split(','), function(i, v) {
    console.log( v );
});

( Демо )

...