2011-05-18 45 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]); 
} 

希望這將有助於。

相關問題