//省略AJAX传输声明部分
success: function(json){
var cnt=json.cnt;
var ar=new Array();
for(var i=0;i<cnt;i++){
ar[i]=json.right[i];
}
br=[6,3,1,2,2,5,2,2,3,3,1,1,3,0,2,2,1,2];
//json.right里面放的是数组br中的这些数
json.right["0"]=6;
json.right["1"]=3;现在我将数组br放在图形插件highchars中series:[{
name: 'jack',
data: br
}]有图形生成,但是将ar放进去series:[{
name: 'jack',
data: ar
}]就没有图形生成。
我将ar和br分别打印出来,结果都是
6,3,1,2,2,5,2,2,3,3,1,1,3,0,2,2,1,2
6,3,1,2,2,5,2,2,3,3,1,1,3,0,2,2,1,2
并用typeof打印了类型,结果也相同请问
var ar=new Array();
for(var i=0;i<cnt;i++){
ar[i]=json.right[i];
}
和br=[6,3,1,2,2,5,2,2,3,3,1,1,3,0,2,2,1,2];有什么区别?
经验猜测是你使用时ar没有赋值,因为ar必须在回调函数中赋值,
你使用ar估计是在回调函数外面,所以先于回调函数执行了,你把使用ar的代码放回调函数里面试试
$.ajax({
url: "http://localhost/highcharts_receive.php?type=jsonp&callback=?",
type: "get",
dataType: "jsonp",
jsonp: 'callback',
success: function(json){
var cnt=json.cnt;
var ar=new Array();
var arid=new Array();
for(var j=1;j<=cnt;j++){
arid[j-1]=j;
}
for(var i=0;i<cnt;i++){
ar[i]=json.wrong[i];//json.right[i];
}
br=[6,3,1,2,2,5,2,2,3,3,1,1,3,0,2,2,1,2];
var chart1 = new Highcharts.Chart({
chart:{
renderTo: 'container',
type: 'area'
},
title:{
text: 'abc'
},
xAxis:{
title: {
text: 'times'
},
categories: arid
},
yAxis: {
min:0,
max:20,
//categories: ar },//如果把ar放在X轴或Y轴当坐标的话是可以显示的
series: [{
name: 'jack',
data: br//把ar放在这里就不行
}]
});
}
});
})
</script> 现在如果把ar放在X轴或者Y轴当坐标的话是可以显示的,但是放在data里面就不行,不论是
data: ar//一次放入整个数组
或者
data:[ar["0"]]//放入其中的一个元素
这两种形式都不能显示
先确认下面哪种方式的参数是合法的
1:
xAxis:{title: {text: 'times'},categories: arid},
yAxis: {min:0,max:20,categories:ar,series: [{name: 'jack',data: br}]}
2:
yAxis: {min:0,max:20,categories:ar},
series: [{name: 'jack',data: br}]
3:
yAxis: {min:0,max:20,categories:ar},
series: {name: 'jack',data: br}
4:
xAxis:{title: {text: 'times'},categories: arid},
yAxis: {min:0,max:20,categories:ar,series: {name: 'jack',data: br}}如果参数传递确认无误,单项确认一下,ar的值是不是真的和br相同
for(var i=0;i<cnt;i++){
alert('值:'+json.wrong[i]+';类型:'+typeof json.wrong[i])
ar[i]=json.wrong[i];//json.right[i];
}
所以需要转换一下类型ar[i]=Number(json.wrong[i])
同时感谢1,2,3楼的耐心解答