用jQuery循环遍历JSON数组

47

我正在尝试循环遍历这个对象以获取'name'值。目前我已经有了以下代码,但它似乎并不起作用。我也试过一些从这里发布的其他代码,但什么都没用。

    $.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

有什么建议吗?

谢谢!


返回一个单括号,'['。 - dzm
这意味着它不将其视为数组... - jackJoe
3个回答

132
你需要将该字符串解析为JSON格式(data[0] == "[" 表明 data 实际上是一个字符串,而不是一个对象):
data = $.parseJSON(data);
$.each(data, function(i, item) {
    alert(item);
});

2
that is that i wrote below :) - Royi Namir
但是这不会使脚本异步吗? - ruveena

11

你还可以将代码中的 .get() 方法改为 .getJSON() 方法,这样 jQuery 将把返回的字符串解析为 JavaScript 对象和/或数组,然后你就可以像引用任何其他 JavaScript 对象/数组一样进行引用。

使用上面的代码,如果你将 .get 改为 .getJSON,则应该会弹出一个包含每个数组元素的 [object Object] 弹窗。如果你将警告更改为 alert(item.name),则会显示名称。


1

我认为你的服务器没有返回json对象,而只是一个字符串。

你需要将返回对象的数据类型设为json。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接