2016-10-12 5 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) возвращает массив массивов, которые я Ван использовать как Google точки графика. Я должен добавлять столбцы отдельно, поскольку они не находятся в массиве.

Edit:

Я теперь обнаружил, что 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

 Смежные вопросы

  • Нет связанных вопросов^_^