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.data
replacethis
:
$.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.'); } }