TypeError:变量未定义 - Google图表

时间:2016-10-12 22:30:09

标签: arrays ajax charts typeerror google-chartwrapper

I'm getting TypeError: dataArray is undefined:


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

这是我的代码:

 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)返回一个数组数组,我将其用作谷歌图表点。我必须单独添加列,因为它们不在数组中。

编辑:

我现在发现dataArray的类型是undefined。我尝试使用以下方法将其转换为数组:

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

然而,这只是将其转换为javascript对象。

如何将其转换为类型数组?

1 个答案:

答案 0 :(得分: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;
}