jQuery $ .each循环和json数据

时间:2011-05-12 05:36:39

标签: php jquery ajax json each

我似乎无法使其工作,我正在检索一些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循环吗?有人可以帮忙吗?

3 个答案:

答案 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)”