我通过XHR请求获得了一堆JSON数据,并获得了以下数据:
{"data_list" : [[1, "Title1", "0.54%"], [2, "Title2", "2.98%"]]}
然后我尝试循环遍历该数据,并将其放在console.log中的控制台中:
var len = json.data_list.length;
for(var i = 0; i < len; i++)
{
console.log(json.data_list[i]);
}
但我没有得到相同的百分比:
[1, "Title1", "0.24%"]
[2, "Title2", "0.00%"]
任何人都知道为什么我会获得前两个字段的正确数据,但不是相同的百分比?即使我拿出JSON响应中的百分号,我仍然得到错误的数字。
假设变量有效,我正在使用一个将json变量映射到json.data_list的库。
我不是很聪明
某处,XHR请求被Dojo破坏了。谢谢你的帮助!
答案 0 :(得分:3)
“data-list”是您希望它执行的无效标识符,因此它被解释为减法。尝试使用括号表示法:
json["data-list"].length
和
json["data-list"][i]
答案 1 :(得分:2)
var len = json.data-list.length;
看起来像是对JavaScript VM的减法操作。您需要使用此方法:json['data-list'].length.
如果您无法控制返回此数据的方法,请尝试以下操作:
var ajaxStr = '{"data-list" : [[1, "Title1", "0.54%"], [2, "Title2", "2.98%"]]}]';
ajaxStr = ajaxStr.replace(/\"([\w]+)-([\w]+)\"/g, "\"$1$2\"");