//省略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];有什么区别?

解决方案 »

  1.   

    会用firefox浏览器的firebug插件吗?不会的话先试着下载安装,再搜索一下firebug,用一下吧。安装好这两个东西了,按f12, 再跟踪js代码,你会很轻松地看到两者的区别。我们没有办法完全重现你的代码,所以只能这么建议你。
      

  2.   

    按你目前展示的写法,是没有区别的,具体问题现在这点代码看不出来
    经验猜测是你使用时ar没有赋值,因为ar必须在回调函数中赋值,
    你使用ar估计是在回调函数外面,所以先于回调函数执行了,你把使用ar的代码放回调函数里面试试
      

  3.   

    感谢1楼,2楼建议,下面给出完整代码$(document).ready(function(){
    $.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"]]//放入其中的一个元素
    这两种形式都不能显示
      

  4.   

    就你上面贴出来的代码,如果你实际使用中是这样注释的"//categories: ar</SPAN>  }"那明显是错误的,参数全乱了
    先确认下面哪种方式的参数是合法的
    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]; 
    }
      

  5.   

    感谢5楼,找到问题了。json.wrong[i]的类型是string,br[i]的类型是number,
    所以需要转换一下类型ar[i]=Number(json.wrong[i])
    同时感谢1,2,3楼的耐心解答