2013-07-17 86 views
0

我收到了一堆JSON数据通过XHR请求,并得到如下数据传回:的Javascript印刷与百分号html的

{"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请求得到了由道场错位。谢谢您的帮助!

+0

什么库您使用?由于它是一个字符串,所以没有理由改变这个值。尝试遍历此库外部的返回数据。 –

+0

Dojo,获取xhr数据。所以它将结果映射到一个变量json,所以在json.data_list上工作的部分工作在json上。我会尝试别的。 – cwill747

+0

它工作正常http://jsfiddle.net/8nTUM/所以你的问题必须在别的地方(也许在从JSON到物体的转换?) – Christophe

回答

3

“数据列表”是一个无效的标识符,因为您希望它的行为,所以它被解释为减法。尝试使用括号记号:

json["data-list"].length 

json["data-list"][i] 

DEMO:http://jsfiddle.net/7bgvV/

+0

对不起,刚刚编辑OP。假设这是一个有效的变量。我正在使用将其映射到json.data_list的库。 – cwill747

+0

@ cwill747你没有编辑第二个问题 - 'json.data-list [i]' – Ian

+0

我会在OP中编辑它,这不是复制和粘贴的代码。为了论证假装它的作品。 – cwill747

2

var len = json.data-list.length;看起来像一个减法运算的JavaScript虚拟机。您需要使用这个方法:如果你有过这种返回数据的方法无法控制json['data-list'].length.

,尝试这样的事情:

var ajaxStr = '{"data-list" : [[1, "Title1", "0.54%"], [2, "Title2", "2.98%"]]}]'; 
ajaxStr = ajaxStr.replace(/\"([\w]+)-([\w]+)\"/g, "\"$1$2\""); 
+0

对不起,刚刚编辑OP。假设这是一个有效的变量。我正在使用将其映射到json.data_list的库。 – cwill747