首先,我利用Php的echo json_encode($data);返回一个二维数组,给js中利用ajax请求的函数,并利用mydata = eval('(' + xhr_graph.responseText + ')'); 获得此数组,并利用alert(mydata)能正常输出此数组的数据,可是当我需要将这个数组传给jschart中的myChart.setDataArray(mydata);中时,jschart老是提示格式错误,当我将mydata固定时,
即mydata = Array([0, 1],[1, 2],[2, 3],[3, 65],[4, 50],[5, 50],[6, 60]);
jschart能正常绘图,注意此时的mydata是根据之前返回的数组的数据构造的。一直认为这可能是跟返回的数据的格式有关,所以我又重新将返回的的mydata进行类型的转换,转换为int,代码如下:
       var data = {};
       for(i=0;i<mydata.length;i++)
{
data[i][0] = parseInt(new Number(mydata[i][0]));
data[i][1] = parseInt(new Number(mydata[i][1]));
}
这样依然提示格式不正确,最后当我将data如下定义时就好了,所以想是否和js数组的定义有关,但是又不是很清楚,请高手赐教,万分感激!
          var data = new Array();
for(i=0;i<mydata.length;i++)
{
data[i] = new Array();
}

解决方案 »

  1.   

    xhr_graph.responseText这个字符串是怎么写的?贴出来
      

  2.   

    alert(xhr_graph.responseText);看看结果
      

  3.   

    $data = array();
    for($i=0;$i<$num2;$i++)
    {
      $data[$i][0] = $i;
      $data[$i][1] = mysql_result($result2, $i, "times");
    }
    echo json_encode($data);
      

  4.   

    alert(xhr_graph.responseText);返回的似乎是一个三维数组,[[1,"49"],[2,"59"]]等等格式的,哦,似乎有点明白了,不过这个和问题中的数组定义有什么影响,一个是new出来的,一个只是直接的定义,难道和c中一样,new之后就给它分配了内存,而定义之后没有,然后赋值的时候出现了什么问题???
      

  5.   

    对,所以我用以下代码进行了转换
    var data = {};
           for(i=0;i<mydata.length;i++)
        {
            data[i][0] = parseInt(new Number(mydata[i][0]));
            data[i][1] = parseInt(new Number(mydata[i][1]));
        }
    但是这样还是不行,但是当data数组定义如下时就OK了。
    var data = new Array();
        for(i=0;i<mydata.length;i++)
        {
            data[i] = new Array();
        }
      

  6.   

    var data = {};你这样定义的不是数组啊数组是[]
      

  7.   

    不好意思,楼上2位,写错了,应该是[],不过无论是var data = [];,还是var data;都是不行,一定要for(i=0;i<mydata.length;i++)
        {
            data[i] = new Array();
        }
    这样定义,就是对这个有点费解……
      

  8.   

    var data = [];
           for(i=0;i<mydata.length;i++)
        {
            data.push(parseInt(new Number(mydata[i][0])));
        }
      

  9.   

    事实上如果你想把二维数组变成一维的直接可以这样:
    var data = [];
    for (i = 0; i < mydata.length; i++) {
    for(var j=0;j<mydata[i].length;j++){
         data.push(mydata[i][j]);//JS中数组任何类型都可以
    }
    }
    如果你只是想简单的复制二维到二维,直接这样就行了:
    var data = [];
           for(i=0;i<mydata.length;i++)
        {
            data.push(mydata[i]);//JS中数组任何类型都可以
        }