将JSON数据附加到ListView

时间:2013-04-08 19:32:20

标签: jquery json

我正在尝试追加以下JSON数据:

[
  {
    "idfruits": "1",
    "fruit": "Apple"
  },
  {
    "idfruits": "2",
    "fruit": "Orange"
  },
  {
    "idfruits": "3",
    "fruit": "Banana"
  },
  {
    "idfruits": "4",
    "fruit": "Raspberry"
  },
  {
    "idfruits": "5",
    "fruit": "Coconut"
  }
]

使用以下代码:

<script type="text/javascript">
    $(function () {
        jQuery.ajax({
            url: "index.php",
            type: "POST",
            dataype: "json",
            async: false,
            success: function (data) {
                console.log(data);
                var items = [];
                $.each(data, function (key, fruit_info) {
                    items.push('<li id="fruit_' + fruit_info.idfruits + '">' + fruit_info.fruit + '</li>');
                });

                $(items.join('')).appendTo('#listy');
            }
        });
    });
</script>

不幸的是,代码会出现以下错误:

TypeError: invalid 'in' operand obj
typeof length === "number" && length > 0 && ( length - 1 ) in obj );

我的目标是制作一个泛型方法,始终将第一个JSON值解析为key,将第二个JSON值解析为val。这可能吗?

2 个答案:

答案 0 :(得分:1)

没有。 ECMAScript指定哈希行为:http://bclary.com/2004/11/07/#a-8.6

  

对象是属性的无序集合。每个属性都包含名称,值和一组属性。

你不能假设给定像{"idfruits":"1","fruit":"Apple"}这样的哈希值,id将是第一个,而果实将是第二个。您需要按名称调用它们。

顺便说一下,非常好的问题。

做你想做的事:

<script type="text/javascript">
$(function () {
    jQuery.ajax({
        url: "index.php",
        type: "POST",
        dataype: "json",
        async: false,
        success: function (data) {
            console.log(data);
            var items = [];
            $.each(data, function (key, fruit_info) {
                items.push('<li id="fruit_' + fruit_info.idfruits + '">' + fruit_info.fruit + '</li>');
            });

            $(items.join('')).appendTo('#listy');
        }
    });
});
</script>

答案 1 :(得分:0)

我认为您希望使用fruit代替value

试试这个

 $.each(data, function(key, val) {
        items.push('<li id="' + this.fruit+ '">' + this.fruit + '</li>');
  });