处理AJAX返回对象JSON

时间:2013-01-07 05:08:48

标签: jquery json each

好的,这很奇怪。我使用PLUpload,它有一个onComplete函数,返回一个名为info的变量。以下是Chrome Dev Console中的返回内容。

Object {response: "[{"id":"65","series":"","part":"","title":"","subt…,"file":"","product":"","type":"1","status":"2"}]", status: 200}
var response = $.parseJSON(info['response']);

$.each(response, function(key, value) {
    console.log(value);
   $.each(value, function(k, v) { 
       console.log(v);
    });
});

console.log(value)在Chrome开发者控制台中为我提供了此信息:

Object {id: "69", title: "", ogv: "", webm: "", length: "0:12"…}

我可以调低箭头,看看我的所有元素。所以我认为在$.each上进行value会产生除console.log(v)回声之外的任何内容。

但如果我console.log(value['id'])我得到65.那就行了。

为什么我不能使用$.each函数迭代此对象?

2 个答案:

答案 0 :(得分:1)

这可以被认为是jQuery中的一个错误,但是你迭代的对象有一个length属性。显然,$.each使用length进行迭代。你最好使用for..in

答案 1 :(得分:0)

$。每个无法迭代给定对象,因为您使用长度作为键,这也是javascript方法,这是$ .each的jQuery Bug不使用hasOwnProperty方法

jQuery .each Bug还提到了here

最好使用核心javascript for..in方法与 hasOwnProperty 检查

var op = { "id":"69", "title":"", "ogv":"", "webm":"", "length":"012" };
for(var i in op) { 
    if(op.hasOwnProperty(i)) {
         console.log(i + ':' + op[i] + '\n');
   }
}