2016-10-12 4 views
0
I'm getting TypeError: dataArray is undefined: 


for (var i=0; i < dataArray.length; i++) 

ここでは私のコードである:TypeError例外:変数が定義されていない - Googleのチャート

var dataArray = sinAjax(0) ; 
      var gdata = new google.visualization.DataTable(); 
      //add column labels 
      gdata.addColumn ('number', 'x'); 
      gdata.addColumn ('number', 'sinx'); 
      //add rows 
      for (var i=0; i < dataArray.length; i++) 
      { 
       delete dataArray[i].location; 
       delete dataArray[i].outcome_status; 
       var row = [];   
       for (var item in dataArray[i]) 
       { 
        row.push(dataArray[i][item]); 
       }   
       gdata.addRow(row); 
      } 

sinAjax(0)IがGoogleチャートポイントとして使用するワン配列の配列を返す関数。配列にないので、列を別に追加する必要があります。

編集:

これでdataArrayが型定義されていないことが判明しました。

dataArray = $.makeArray(sinAjax(0)) ; 

ただし、これはjavascriptオブジェクトに変換するだけです。

どのようにタイプ配列に変換しますか?

答えて

0

問題は実際には私の関数sinAjax(0)であり、それはajax呼び出しであり、私はレベルが高いときに成功関数内でreturnを使用していました。

古いコード:

function sinAjax(xVal) 
    { 
     var vArrTestY; 

     $.ajax ({ 
       async: false, 
       type: "POST", 
       global: false, 
       url: "PHP/calcsin.php", 
       data: { x : xVal } , 
       //dataType: "json", 
       success: function (response) 
       { 
        console.log("Response"); 
        console.log(response);   
        vArrTestY = JSON.parse(response); 
        return vArrTestY; 
       } 
       } ) ;    

    } 

新しいコード:

function fSinAjax(xVal) 
{ 
    var vArrTestY; 

    $.ajax ({ 
      async: false, 
      type: "POST", 
      global: false, 
      url: "PHP/calcsin.php", 
      data: { x : xVal } , 
      //dataType: "json", 
      success: function (response) 
      { 
       console.log("Response"); 
       console.log(response);   
       vArrTestY = JSON.parse(response);    
      } 
      } ) ;    
    return vArrTestY; 
} 
+0

同期呼び出しは悪い考えです。 – epascarello

関連する問題