【问题标题】:loop through json array jquery循环通过json数组jquery
【发布时间】:2011-10-14 17:59:18
【问题描述】:

我正在尝试循环获取“名称”值。这是我目前拥有的,但它似乎不起作用,尝试了这里发布的其他一些内容,但似乎没有任何效果。

    $.get("/get_names", {campaign_id: $('select[name="id"]').val()}, 
                function(data){
                    $.each(data, function(i, item) {
                        alert(item);
                    });
                }
   );

Json 被返回:

   [
           {
              "name":"age"
           },
           {
              "name":"asdf"
           },
           {
              "name":"drivername"
           },
           {
              "name":"drivers"
           },
           {
              "name":"firstname"
           },
           {
              "name":"gender"
           },
           {
              "name":"lastname"
           },
           {
              "name":"make"
           },
           {
              "name":"model"
           },
           {
              "name":"vehicles"
           },
           {
              "name":"year"
           }
        ]

我尝试过使用:

item.name
item[i].name

有什么建议吗?

谢谢!

【问题讨论】:

  • 返回一个括号,'['
  • 这意味着它没有将其视为一个数组...

标签: jquery json loops


【解决方案1】:

您必须将字符串解析为 JSON(data[0] == "[" 表示 data 实际上是字符串,而不是对象):

data = $.parseJSON(data);
$.each(data, function(i, item) {
    alert(item);
});

【讨论】:

  • 那是我在下面写的:)
  • 但这不会使脚本异步吗??
【解决方案2】:

您也可以从.get() 方法更改为.getJSON() 方法,然后jQuery 会将作为data 返回的字符串解析为一个javascript 对象和/或数组,然后您可以像任何其他javascript 对象一样引用它/数组。

使用上面的代码,如果您将.get 更改为.getJSON,您应该会收到数组中每个元素的[object Object] 警报。如果您将警报更改为alert(item.name),您将获得名称。

【讨论】:

    【解决方案3】:

    我认为您不会从服务器返回 json 对象。只是一个字符串。

    需要返回对象的dataType为json

    【讨论】:

      猜你喜欢
      • 2012-09-16
      • 2012-12-08
      • 1970-01-01
      • 2019-07-20
      • 2019-10-20
      • 2015-04-01
      • 2014-02-26
      • 1970-01-01
      • 2013-08-19
      相关资源
      最近更新 更多