我似乎无法使其工作,我正在检索一些json数据,并且只是尝试循环它并将其附加到DIV。这是我的代码:
JSON如何返回(PHP)
{"list":[{"subscribe":"example"},{"subscribe":"example2"},{"subscribe":"example3"},{"subscribe":"example4"},{"subscribe":"example5"}]}
使用JQUERY进行MY JSON调用
$.getJSON("article.php",function(data)
$.each(data.list, function(i,data) {
var listData = "<li>" + data.subscribe + "</li>";
$('#lists').append(listData);
});
});
我没有在控制台中检索任何错误,但没有发生任何事情,我知道调用成功,我正在正确执行.each循环吗?有人可以帮忙吗?
答案 0 :(得分:5)
也许你可以试试这个:
$.each(data.list, function(i, item) {
var listData = "<li>" + item.subscribe + "</li>";
$('#lists').append(listData);
});
只需将function(i, data)
更改为function(i, item)
。
通过以您的方式重用变量名data
,您实际上并没有像预期的那样循环遍历数组。
答案 1 :(得分: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添加一个变量并附加到循环中,因为现在你的代码正在遍历JSON列表中每个对象的div的DOM。
另外,我不确定你是否截断了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.
};
});
答案 2 :(得分:1)
似乎你遇到了语法错误。 A {在第一行之后缺失,即第一行的起始{for“function(data)”