#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 Или это плохая копия / вставка, но тем не менее она отсутствует. Хорошая работа по поиску этого, я посмотрел и правильно передал, лол…