перебор json-массива jquery

#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