我从ajax调用得到以下返回但是无法遍历它请求帮助。
{ "1": { "tel1": null, "status": "1", "fax": "", "tel2": null, "name": "sh_sup1", "country": "Anguilla", "creation_time": "2010-06-02 14:09:40", "created_by": "0", "Id": "85", "fk_location_id": "3893", "address": "Noida", "email": "sh_sup1@shell.com", "website_url": "http://www.noida.in", "srk_main_id": "0" }, "0": { "tel1": "Ahemdabad", "status": "1", "fax": "", "tel2": "Gujrat", "name": "Bharat Petro", "country": "India", "creation_time": "2010-05-31 15:36:53", "created_by": "0", "Id": "82", "fk_location_id": "3874", "address": "THIS is test address", "email": "bp@india.com", "website_url": "http://www.bp.com", "srk_main_id": "0" }, "count": 2 }
答案 0 :(得分:2)
你可以很容易地做到:
for(i = 0; i < msg.count; i++) {
alert(msg[i]['name']);
}
但是由于以下几个原因,JSON对象的结构并不好:
它不反映实际数据的结构
我的意思是,你实际上有一个数组的对象。但是在您的JSON对象中,数组的元素表示为对象的属性。
您的JavaScript对象属性名称无效
JavaScript中对象的属性不允许以数字开头。但是对于msg = { "1": {...}}
,您有一个数字作为属性
幸运的是,它并不是那么糟糕,因为您可以使用“数组类似”访问msg["1"]
(而不是“正常方式”,msg.1
)来访问此属性。但我认为这是不好的做法,尽可能避免这种情况。
因此,正如Matthew已经提出的那样,最好从服务器端的数组中移除count
条目, 之前将 客户端。即你应该得到一个JSON数组:
[{
"tel1": "Ahemdabad",
"status": "1",
// etc.
},
{
"tel1": null,
"status": "1",
// etc.
}]
您不需要count
,因为您可以使用msg.length
获取数组的长度,并且可以使用以下代码遍历数组:
for(var i in msg) {
alert(msg[i].name);
}