[英]How to loop through an JSON associative array in javascript?
我从服务器获得JSON响应,我必须在javascript中循环遍历数组并获取值。 但我似乎无法循环。
数组的JSON响应如下所示:
{
"1": "Schools",
"20": "Profiles",
"31": "Statistics",
"44": "Messages",
"50": "Contacts"
}
我只想循环遍历它以获取ID和Name并在页面上填充一些值。
我试过了:
$.each(response, function(key, value) {
alert(key + ' ' + value);
});
// and
for (var key in response) {
alert(key + ' ' + response[key]);
}
但是没有给出正确的价值观。
在此先感谢您的帮助。
回复:嗨,我在第二个循环中得到的响应是:
0 {
1 "
2 1
3 "
4 :
5 "
6 S
等等
这意味着它将整个响应作为字符串进行处理,并将其作为键/值进行拆分。
谢谢
您的问题是您没有解析JSON字符串。 因此,您的foreach将遍历JSON字符串中的字符。
// If you are using jQuery.ajax, you can just set dataType to 'json'
// and the following line will be done for you
var obj = jQuery.parseJSON( response );
// Now the two will work
$.each(obj, function(key, value) {
alert(key + ' ' + value);
});
for (var key in obj) {
alert(key + ' ' + response[key]);
}
var response = {"1":"Schools","20":"Profiles","31":"Statistics","44":"Messages","50":"Contacts"};
for (var i in response) {
console.log(i + ' ' + response[i]);
}
工作得很好,你怎么得到你的回应var?
你不需要这样做,处理字符串是一项无聊的工作。 您可以通过响应创建一个对象。 1: json = eval(xmlHttp.responseText);
但这在某种程度上是不安全的。
json = JSON.parse(xmlHttp.responseText, function(key,value){// can do some other stuff here.});
然后你可以将变量作为普通对象来操作,如obj.a或obj [“a”]。
愿这对你有所帮助。
jQuery.each
工作正常。 for-each
循环都是如此
他们两个都应该工作。 您的代码的其他部分可能有错误。 response
变量是否正确设置为问题中给出的JSON对象? 你在检查响应statusCode吗? 成功回应应该是200?
考虑一下我如何使用jQuery解析JavaScript对象以获得可能的答案。
您可以在纯Javascript中使用for-in
构造。 当然,您需要注意的是,您只关注对象自己的属性(像Prototype这样的库会污染):
for(var key in response) {
if(response.hasOwnProperty(key)) {
...
}
}
编辑
你在用jQuery.ajax
吗? 什么是dataType
值? 它应该是json
。 这可能就是您的响应被解释为字符串的原因。 另外,当你使用console.log
响应时,它是否显示为字符串或对象?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.