2015-04-20 35 views
2

我知道這已被問過,但我無法得到這個工作。任何幫助不勝感激。在jQuery中循環JSON

了var obj了這樣的內容:

{ 
    "1": { 
     "key1": "val", 
     "key2": "val2" 
    }, 
    "91": { 
     "key1": "val", 
     "key2": "val2" 
    } 
} 

我循環這樣的..

$.post("path/to/script.php", { 
    'param': $('#param').val() 
}, function (r) { 
    var obj = $.parseJSON(r); 
    $.each(obj, function (k, v) { 
     //doing some stuff with v.key1,v.key2 etc 
    }); 
}); 

而在jQuery的

TypeError: invalid 'in' operand a

+0

嘗試在回調中添加'console.log(typeof r)'並查看它說了什麼? – adeneo

+0

好的,發現r和obj都是字符串。應該有真的。爲什麼它不能正確解析? –

回答

2

得到一個有用的經典JS錯誤的地方該對象是嵌套的,所以你必須嵌套each

var obj = { 
    "1": { 
     "key1": "val", 
     "key2": "val2" 
    }, 
    "91": { 
     "key1": "val", 
     "key2": "val2" 
    } 
}; 

如果您將JSON作爲字符串獲取,則需要將該字符串解析爲JSON。

var r = '{"1": {"key1": "val","key2": "val2"},"91": {"key1": "val","key2": "val2"}}'; 
 

 
var obj = JSON.parse(r); 
 
$.each(obj, function(k, v) { 
 
    $.each(v, function(key, value) { 
 
    console.log(value); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>

演示:https://jsfiddle.net/L09bjjtc/1/

如果你所得到的響應,JSON,您可以使用dataType選項POST方法:

$.post("test.php", { func: "getNameAndTime" }, function(data) { 
    // data is JSON object 
    // Data processing here 
}, "json"); 

文檔:https://api.jquery.com/jquery.post/

+0

而不是'obj [k]'你可以使用'v' ... – Styphon

+0

謝謝你的嘗試,但同樣的問題。已經發現r和解析變量obj都以字符串結尾 –

+0

@MikeMiller將'json'添加爲'dataType' – Tushar