#jquery #json #loops
#jquery #json #циклы
Вопрос:
Я пытаюсь выполнить цикл через это, чтобы получить значения ‘name’. Это то, что у меня есть в настоящее время, но, похоже, оно не работает, попробовал несколько других из того, что было опубликовано здесь, но, похоже, ничего не сработало.
$.get("/get_names", {campaign_id: $('select[name="id"]').val()},
function(data){
$.each(data, function(i, item) {
alert(item);
});
}
);
Возвращается Json:
[
{
"name":"age"
},
{
"name":"asdf"
},
{
"name":"drivername"
},
{
"name":"drivers"
},
{
"name":"firstname"
},
{
"name":"gender"
},
{
"name":"lastname"
},
{
"name":"make"
},
{
"name":"model"
},
{
"name":"vehicles"
},
{
"name":"year"
}
]
Я пробовал использовать:
item.name
item[i].name
Есть предложения?
Спасибо!
Комментарии:
1. возвращает одну скобку, ‘[‘
2. это означает, что он не обрабатывает его как массив…
Ответ №1:
Вы должны проанализировать строку как JSON ( data[0] == "["
это указание на то, что data
на самом деле это строка, а не объект):
data = $.parseJSON(data);
$.each(data, function(i, item) {
alert(item);
});
Комментарии:
1. это то, что я написал ниже 🙂
2. Но разве это не делает скрипт асинхронным??
Ответ №2:
вы также можете перейти от .get()
метода к .getJSON()
методу, после чего jQuery проанализирует возвращенную строку как data
объект javascript и / или массив, на который вы затем можете ссылаться, как на любой другой объект / массив javascript.
используя приведенный выше код, если вы изменили .get
на .getJSON
, вы должны получить предупреждение [object Object]
для каждого элемента в массиве. Если вы изменили оповещение alert(item.name)
, вы получите имена.
Ответ №3:
Я не думаю, что вы возвращаете объект json с сервера. просто строка.
вам нужно, чтобы тип данных возвращаемого объекта был json