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


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

Voici mon code:TypeError: variable non définie - diagrammes 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); 
      } 

la fonction sinAjax (0) retourne un tableau de tableaux que je wàn à utiliser comme points de Google Chart. Je dois ajouter des colonnes séparément car elles ne sont pas dans le tableau.

Edit:

J'ai maintenant découvert que tableauDonnees est de type non défini. J'ai essayé de le convertir en un tableau en utilisant:

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

Cependant, cela convertit juste en un objet javascript. Comment est-ce que je le convertis en type tableau?

Répondre

0

Le problème était en fait avec ma fonction sinAjax(0), c'est un appel ajax et j'utilisais un return dans la fonction de succès quand j'avais besoin d'un niveau supérieur.

ancien code:

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; 
       } 
       } ) ;    

    } 

nouveau code:

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

appels synchrones sont une mauvaise idée. – epascarello