jQuery $.каждый цикл и данные json

#php #jquery #ajax #json #each

#php #jquery #ajax #json #каждый

Вопрос:

Кажется, я не могу заставить это работать, я извлекаю некоторые данные json и просто пытаюсь перебрать их и добавить в DIV. вот мой код:

КАК ВОЗВРАЩАЕТСЯ JSON (PHP)

 {"list":[{"subscribe":"example"},{"subscribe":"example2"},{"subscribe":"example3"},{"subscribe":"example4"},{"subscribe":"example5"}]}
  

МОЙ ВЫЗОВ JSON С ИСПОЛЬЗОВАНИЕМ JQUERY

 $.getJSON("article.php",function(data)
   $.each(data.list, function(i,data) {
      var listData = "<li>"   data.subscribe   "</li>";
      $('#lists').append(listData);
   });
});
  

Я не извлекаю никаких ошибок в консоли, но ничего не происходит, я знаю, что вызов успешен, я делаю .каждый цикл правильно? кто-нибудь может, пожалуйста, помочь?

Комментарии:

1. Вы пробовали вставлять console.log перед вашим итерационным циклом, чтобы посмотреть, что data возвращается?

Ответ №1:

Может быть, вы можете попробовать это:

 $.each(data.list, function(i, item) {
    var listData = "<li>"   item.subscribe   "</li>";
    $('#lists').append(listData);
});
  

Просто измените function(i, data) на function(i, item) .

Повторно используя имя переменной data таким образом, каким вы это делаете, вы на самом деле не выполняете цикл по массиву, как вы ожидаете.

Ответ №2:

Лично я не использовал $.each для перебора массива, потому что я всегда просто выполняю for цикл, так что вы можете попробовать это:

 $.getJSON("article.php", function (d) {
    var listsDiv = $("#lists");

    for (var i = 0; i < d.list.length; i  ) {
        listsDiv.append("<li>"   d.list[i].subscribe   "</li>");
    };
});
  

Я на 99% уверен, что это должно работать для того, что вам нужно. Кроме того, лучше иметь переменную для вашего div вне цикла и добавлять в цикле, потому что прямо сейчас ваш код просматривает DOM для этого div для каждого объекта в вашем списке JSON.

Кроме того, я не уверен, что вы усекаете ответ JSON, но вы можете захотеть прикрепить свойство ‘success’ и проверить это. Итак, ваш код будет обновлен до этого:

 $.getJSON("article.php", function (d) {
    if (d.success) {
        var listsDiv = $("#lists");

        for (var i = 0; i < d.list.length; i  ) {
            listsDiv.append("<li>"   d.list[i].subscribe   "</li>");
        };
    } else {
        // Do something else to notify the user that the data could not be retrieved.
    };
});
  

Ответ №3:

Кажется, у вас синтаксическая ошибка. После первой строки отсутствует {, то есть начальное { для «функции (данных)» в первой строке

Комментарии:

1. 1 Или это плохая копия / вставка, но тем не менее она отсутствует. Хорошая работа по поиску этого, я посмотрел и правильно передал, лол…