2011-10-14 131 views
39

我想通过循环来获取'name'值。这是我目前所拥有的,但它似乎并没有工作,从这里发布的内容中尝试了其他几个,但似乎没有任何工作。循环通过json数组jquery

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

的Json返回:

item.name 
item[i].name 

任何建议:

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

我已经尝试使用?

谢谢!

+0

尝试'item [i] [0]' – jackJoe

+0

返回一个括号,'[' – dzm

+0

这意味着它不会将其视为数组... – jackJoe

回答

111

你不得不解析字符串作为JSON(data[0] == "["是一个迹象表明data实际上是一个字符串,而不是一个对象):

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

那就是我写的:) –

+0

但是不是这个使脚本异步? – ruveena

1

我不以为你在从服务器返回的JSON对象。只是一个字符串。

你需要返回的对象的数据类型为JSON

9

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

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