jQuery循环AJAX成功的JSON结果?

在jQuery的AJAX成功callback我想循环的对象的结果。 这是Firebug中响应的例子。

[ {"TEST1":45,"TEST2":23,"TEST3":"DATA1"}, {"TEST1":46,"TEST2":24,"TEST3":"DATA2"}, {"TEST1":47,"TEST2":25,"TEST3":"DATA3"} ] 

我怎样才能循环的结果,以便我可以访问每个元素? 我已经尝试了下面的东西,但这似乎并没有工作。

 jQuery.each(data, function(index, itemData) { // itemData.TEST1 // itemData.TEST2 // itemData.TEST3 }); 

你可以删除外部循环,并用data.datareplacethis

 $.each(data.data, function(k, v) { /// do stuff }); 

你近了:

 $.each(data, function() { $.each(this, function(k, v) { /// do stuff }); }); 

你有一个对象/地图的数组,所以外层循环遍历这些。 内部循环遍历每个对象元素的属性。

您也可以使用getJSON函数:

  $.getJSON('/your/script.php', function(data) { $.each(data, function(index) { alert(data[index].TEST1); alert(data[index].TEST2); }); }); 

这实际上只是ifesdjeen回答的重新说明,但我认为这可能对人们有所帮助。

如果你使用FF,只要打开一个控制台,试试这个:

 var a = [ {"TEST1":45,"TEST2":23,"TEST3":"DATA1"}, {"TEST1":46,"TEST2":24,"TEST3":"DATA2"}, {"TEST1":47,"TEST2":25,"TEST3":"DATA3"} ]; $.each (a, function (bb) { console.log (bb); console.log (a[bb]); console.log (a[bb].TEST1); }); 

希望它有帮助

像任何其他数组一样访问json数组。

 for(var i =0;i < itemData.length-1;i++) { var item = itemData[i]; alert(item.Test1 + item.Test2 + item.Test3); } 

对于坚持这一点的人来说,这可能不起作用,因为ajax调用将返回的数据解释为文本 – 也就是说,它还不是JSON对象。

您可以通过手动使用parseJSON命令或简单地将dataType:'json'属性添加到您的ajax调用来将其转换为JSON对象。 例如

 jQuery.ajax({ type: 'POST', url: '<?php echo admin_url('admin-ajax.php'); ?>', data: data, dataType: 'json', // ** ensure you add this line ** success: function(data) { jQuery.each(data, function(index, item) { //now you can access properties using dot notation }); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("some error"); } }); 

尝试jQuery.map函数,与地图工作得很好。

 var mapArray = { "lastName": "Last Name cannot be null!", "email": "Email cannot be null!", "firstName": "First Name cannot be null!" }; $.map(mapArray, function(val, key) { alert("Value is :" + val); alert("key is :" + key); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

您也可以使用getJSON函数:

 $.getJSON('/your/script.php', function(data) { $.each(data, function(index) { alert(data[index].TEST1); alert(data[index].TEST2); }); }); 

这是我想出来轻松查看所有数据值:

 var dataItems = ""; $.each(data, function (index, itemData) { dataItems += index + ": " + itemData + "\n"; }); console.log(dataItems); 

$each将工作..另一种select是数组结果的jQuery Ajaxcallback

 function displayResultForLog(result) { if (result.hasOwnProperty("d")) { result = result.d } if (result !== undefined && result != null ) { if (result.hasOwnProperty('length')) { if (result.length >= 1) { for (i = 0; i < result.length; i++) { var sentDate = result[i]; } } else { $(requiredTable).append('Length is 0'); } } else { $(requiredTable).append('Length is not available.'); } } else { $(requiredTable).append('Result is null.'); } }