关于js数组的问题

zimu312500 2010-08-03 09:09:20
首先,我利用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();
}
...全文
208 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zimu312500 2010-08-03
  • 打赏
  • 举报
回复
alert(xhr_graph.responseText);返回的似乎是一个三维数组,[[1,"49"],[2,"59"]]等等格式的,哦,似乎有点明白了,不过这个和问题中的数组定义有什么影响,一个是new出来的,一个只是直接的定义,难道和c中一样,new之后就给它分配了内存,而定义之后没有,然后赋值的时候出现了什么问题???
zimu312500 2010-08-03
  • 打赏
  • 举报
回复
$data = array();
for($i=0;$i<$num2;$i++)
{
$data[$i][0] = $i;
$data[$i][1] = mysql_result($result2, $i, "times");
}
echo json_encode($data);
zoujp_xyz 2010-08-03
  • 打赏
  • 举报
回复
alert(xhr_graph.responseText);看看结果
孟子E章 2010-08-03
  • 打赏
  • 举报
回复
xhr_graph.responseText这个字符串是怎么写的?贴出来
tidelgl 2010-08-03
  • 打赏
  • 举报
回复
事实上如果你想把二维数组变成一维的直接可以这样:
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中数组任何类型都可以
}
tidelgl 2010-08-03
  • 打赏
  • 举报
回复
var data = [];
for(i=0;i<mydata.length;i++)
{
data.push(parseInt(new Number(mydata[i][0])));
}
zimu312500 2010-08-03
  • 打赏
  • 举报
回复
不好意思,楼上2位,写错了,应该是[],不过无论是var data = [];,还是var data;都是不行,一定要

for(i=0;i<mydata.length;i++)
{
data[i] = new Array();
}

这样定义,就是对这个有点费解……
hoojo 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 net_lover 的回复:]

var data = {};你这样定义的不是数组啊数组是[]
[/Quote]
那是对象
孟子E章 2010-08-03
  • 打赏
  • 举报
回复
var data = {};你这样定义的不是数组啊数组是[]


zimu312500 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 net_lover 的回复:]
[1,"49"] 49是字符类型的了
[1,49] 49是数字类型
[/Quote]
对,所以我用以下代码进行了转换
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();
}
孟子E章 2010-08-03
  • 打赏
  • 举报
回复
[1,"49"] 49是字符类型的了
[1,49] 49是数字类型

87,920

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧