关于jQuery AJAX成功回调,我想循环遍历对象的结果.这是响应在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 });
cletus.. 241
您可以删除外部循环并替换this
为data.data
:
$.each(data.data, function(k, v) { /// do stuff });
你很亲密:
$.each(data, function() { $.each(this, function(k, v) { /// do stuff }); });
你有一个对象/地图数组,所以外部循环遍历那些.内部循环遍历每个对象元素上的属性.
您可以删除外部循环并替换this
为data.data
:
$.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的答案的重写,但我认为它可能对人们有所帮助.
如果你使用Fire Fox,只需打开一个控制台(使用F12键)并尝试这个:
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命令将其转换为JSON对象,或者只是将dataType:'json'属性添加到您的ajax调用中.例如
jQuery.ajax({ type: 'POST', url: '', 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"); } });
这是我想出的轻松查看所有数据值的方法:
var dataItems = "";
$.each(data, function (index, itemData) {
dataItems += index + ": " + itemData + "\n";
});
console.log(dataItems);