如何在jQuery中循环遍历JSON数组?

35

我有一个PHP页面,从中我以JSON格式获取响应:

[{'com':'something'},{'com':'some other thing'}]
我想循环并将每个元素添加到一个div中。 这是我尝试的代码:
var obj = jQuery.parseJSON(response);
$.each(obj.com, function(key,value) {
  alert(key+':'+value);
}

这会触发 undefined 提示,并且响应是 JSON 数组。


@KoIIIeY没有显示任何警报。 - Niket Malik
8个回答

73

您的数组具有默认键(0,1),存储对象{'com':'some thing'} 用法:

var obj = jQuery.parseJSON(response);
$.each(obj, function(key,value) {
  alert(value.com);
}); 

有没有办法逐个淡入?我在添加时使用了.hide().fadeIn(800);,但它会一次性淡入整个内容,是否可能逐个淡入? - Niket Malik
在添加任何元素之后(在将控制权交给用户之前),您必须重新绑定事件($(...)。bind(“”)或attachEvent())。 - Dell
我解决了,我隐藏了所有的div,然后对每个进行了淡入,无论如何,谢谢:D - Niket Malik
最后一行语法错误:需要正确的闭合 }); - ChristoKiwi

13

试试这个:

var data = jQuery.parseJSON(response);
$.each(data, function(key, item) 
{
   console.log(item.com);
});
或者
var data = $.parseJSON(response);

$(data).each(function(i,val)
 {
    $.each(val,function(key,val)
  {
          console.log(key + " : " + val);     
  });
});

循环但同时显示 [object, object] 我是通过 AJAX 调用获取 JSON 数据的 - Niket Malik

7
var data = [ 
 {"Id": 10004, "PageName": "club"}, 
 {"Id": 10040, "PageName": "qaz"}, 
 {"Id": 10059, "PageName": "jjjjjjj"}
];

$.each(data, function(i, item) {
   alert(data[i].PageName);
});​

$.each(data, function(i, item) {
  alert(item.PageName);
});​

或者您可以尝试这种方法。
var data = jQuery.parseJSON(response);
$.each(data, function(key,value) {
   alert(value.Id);    //It will shows the Id values
}); 

7

您正在遍历一个未定义的值,即数组对象的com属性,您应该遍历数组本身:

$.each(obj, function(key,value) {
   // here `value` refers to the objects 
});

请注意,jQuery会智能尝试解析发送的JSON,因此您可能不需要解析响应。 如果使用$.ajax(),可以将dataType设置为json,告诉jQuery为您解析JSON。
如果仍然无法正常工作,请检查浏览器控制台进行故障排除。

3
var data=[{'com':'something'},{'com':'some other thing'}];
$.each(data, function() {
  $.each(this, function(key, val){
    alert(val);//here data 
      alert (key); //here key

  });
});

2

你可以获取键值对,如下所示:

<pre>
function test(){    
var data=[{'com':'something'},{'com':'some other thing'}];    
$.each(data, function(key,value) {    
alert(key);  
alert(value.com);    
});    
}
</pre>

请在您的答案中添加一些解释。谢谢! - Sampada

2

试试这个:

for(var i = 0; i < data.length; i++){
    console.log(data[i].com)
}

0

试一下这个

var events = [];

alert(doc);
var obj = jQuery.parseJSON(doc);

     $.each(obj, function (key, value) {

    alert(value.title);

});


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