getJSON并使用$ .each进行循环

时间:2014-02-02 05:24:29

标签: javascript jquery json

我将代码清理成一个非常简单的脚本,它让我疯了,它不起作用。

我们的想法是通过Webservice获取JSON字符串,然后显示数据。是的,这似乎是一件非常简单的事情......

JSON字符串有效:

[
{
    "FileName": "Test1",
    "GuestRating": 7.09,
    "ID": 1066113,
    "Image": "A110897780.jpg",
    "Latitude": 35.534599,
    "Longitude": 121.759896,
    "Name": "Test 1",
    "NumberOfReviews": 317,
    "Rate": 19.19,
    "StarRating": 4,
    "UpdatedDate": "2012-11-09T16:48:27.65",
    "UpdatedBy": "test"
},
{
    "FileName": "Test 2",
    "GuestRating": 8.03,
    "ID": 1066110,
    "Image": "A110563463.jpg",
    "Latitude": 31.432816,
    "Longitude": 122.53242,
    "Name": "Test 2",
    "NumberOfReviews": 164,
    "Rate": 27.92,
    "StarRating": 4,
    "UpdatedDate": "2012-04-26T10:46:34.403",
    "UpdatedBy": "test"
}

我的javascript:

<script src="Scripts/jquery-2.0.3.min.js"></script>
<script>
    $(document).ready(function () {
        $.getJSON('api/hotels')
            .done(function (data) {
                alert(data)
                var items = [];
                $.each(data, function (key, val) {
                    alert('11111');
                    items.push("<li id='" + key + "'>" + val + "</li>");
                });
                alert('2222');

                $("<ul/>", {
                    "class": "my-new-list",
                    html: items.join("")
                }).appendTo("body");
            })
        .error(function () {
            alert('error');
        });
    });

</script>

它主要是从他们网站上的jQuery示例中复制而来的。 第一个警报工作并显示JSON数据。 然后它似乎就要死了。没有更多提醒。 chrome的Javascript控制台显示以下语句:

Uncaught TypeError: Cannot use 'in' operator to search for '1525' in

后跟我的JSON字符串。我不知道这意味着什么。

感谢任何有提示的人!

1 个答案:

答案 0 :(得分:1)

使用包含$.each(data, function (key, val) {的JSON不会返回keys之类的FileName。为什么?因为each遍历数组,每次都会返回一个索引和一个完整的对象。

$.each(data, function (idx, obj) {
  $.each(obj, function(key, val) {
    ...