2011-05-18 101 views
2

这个错误的原因是什么?TypeError:json [i]未定义

<script type="text/javascript"> 
     dojo.xhrGet({ 
      url: "homeChart.php", 
      handleAs: "json", 
      load: function(json) { 
       $m = []; 
       for (var i = 1; i < 10; i++) { 
        $m.push(parseFloat(json[i]["valor" + i])); 
        alert(i);  
       } 
       dojo.addOnLoad(makeCharts); 
      } 
     }); 
    </script> 

homeChart.php的输出恰好:[200]

感谢

+0

习题巧妙地,你应该做'我 2011-05-19 07:40:46

回答

1

JSON是[200],其在索引为0

在它(200)只有一件事for循环使用索引1到10 - 这些索引没有为这个数组定义。

+0

但如果我这样做:for(var i = 0; i <1; i ++){错误消失,但警报的结果是:NaN。可能目前的循环没有任何意义,但将来可能会使 – user455318 2011-05-18 22:01:52

+1

只是删除[“valor”+ i])。解决 – user455318 2011-05-18 22:06:38

+0

NaN的警报是一个完全不同的问题 - 错误的原始问题是由于循环和数组索引。没有更多的信息,我不知道为什么警报说NaN。警报应该提醒循环索引,在这种情况下应该是0。 – Zach 2011-05-18 22:08:15

0

你正在做的: parseFloat(JSON [I] [ “勇敢” + I]

即使i在范围内,JSON [0] [ “valor0”]是未定义的,母鸡parseFloat返回NaN

如果你的JSON是float数组,你应该尝试像

for (var i = 0; i < json.length; i++) { 
    $m.push(json[i]); 
} 

希望这将有助于。