解决方案 »

  1.   

    categories:// ['10:18:13','10:20:11','10:21:03','10:53:08','10:55:14','10:56:16','10:57:21','10:58:29','10:59:33','11:10:33'],
                            function () {
                            $.get("ashx/Handler.ashx", { time: new Date().getTime() }, function (data) {
                                alert(data);
                                var dd = "{root:" + data + "}";
                                var dobj = eval("(" + dd + ")");
                                var x = eval("(" + data + ")");
                                var text="[";
                                var dataarry = new Array(dobj.root.length);
                                for (var i in x) {                                
                                    dataarry[i]=x[i].postdate;
                                    text+="'"+x[i].postdate+"'";
                                    if(i!=dobj.root.length-1)
                                    {
                                        text+=",";
                                    }
                                }
                                text+="]";
                                alert(text); 
                                return text;                           
                            })                        
                        }
      

  2.   

    我第一行注释了的数组就是最后alert(text)弹出的数组,我直接贴数组可以使用,用return text就不行 ,不知道是不是有语法错误..
      

  3.   

    把你要这个返回数据的方法写到ajax里  ajax是异步执行的  所以如果再外边接收的话很可能在接收时ajax还没返回数据呢  所以接收不到
      

  4.   

    return text;  给谁用。
      

  5.   

    return 的东西不是用在for ( ; list && firingIndex < firingLength; firingIndex++ ) {
    var $a = list[ firingIndex ];
    if ( $a.apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
    memory = false; // To prevent further calls using add
    break;
    }
    }
      

  6.   

    text 在function外 申明var text;
    function x(){
        $.ajax( , function( data ){
            return ( text = data );
        });
    }
      

  7.   

    text 在function外 申明var text;
    function x(){
        $.ajax( , function( data ){
            return ( text = data );
        }, false );
    }
      

  8.   

    tooltip: {
                        enabled: true,
                        formatter: function() {
                            return '<b>' + this.x + '</b><br/>' + this.series.name + ': ' + Highcharts.numberFormat(this.y, 1);
                        }
      

  9.   

    这是对象的方法,当然要有返回值。可你那个是回调函数,要返回值 返回给谁?
    $.get()的回调函数是不需要返回值,
    说下你那个text是要用来干什么的
      

  10.   

    你确定这里的categories可以接受函数吗?如果不能,那么你可以这么做,将ajax设置为同步,然后
    categories:function(){你的内容}();
    意思是定义一个函数,并执行该函数
      

  11.   

    ajax是异步执行的,你把它改成$.ajax()方法的同步试一下看
      

  12.   


    categories:function(){
    var value = '';
    $.ajax({
    url:'ashx/Handler.ashx',
    async:false,//设置为同步,
    data:{ time: new Date().getTime() },
    success:function(data){
    alert(data);
    var dd = "{root:" + data + "}";
    var dobj = eval("(" + dd + ")");
    var x = eval("(" + data + ")");
    var text="[";
    var dataarry = new Array(dobj.root.length);
    for (var i in x) {                                
    dataarry[i]=x[i].postdate;
    text+="'"+x[i].postdate+"'";
    if(i!=dobj.root.length-1){
    text+=",";
    }
    }
    text+="]";
    alert(text); 
    value=text;
    }
    });
    return value;
    }()
      

  13.   

    我按照这个方法写了,代码可以正常执行,alert也可以弹出数据但是效果没出来我把效果贴出来
      

  14.   

    <script type="text/javascript">        var chart;
            $(document).ready(function() {
                chart = new Highcharts.Chart({
                    chart: {
                        renderTo: 'container',          //放置图表的容器
                        plotBackgroundColor: null,
                        plotBorderWidth: null,
                        defaultSeriesType: 'line'
                    },
                    title: {
                        text: '气温走势'
                    },
                    subtitle: {
                        text: '测试仪'
                    },
                    xAxis: {//X轴数据
    //                    categories:// ['10:18:13','10:20:11','10:21:03','10:53:08','10:55:14','10:56:16','10:57:21','10:58:29','10:59:33','11:10:33'],
                          categories:function(){
                                    var value = '';
                                    $.ajax({
                                        url:'ashx/Handler.ashx',
                                        async:false,//设置为同步,
                                        data:{ time: new Date().getTime() },
                                        success:function(data){
                                            alert(data);
                                            var dd = "{root:" + data + "}";
                                            var dobj = eval("(" + dd + ")");
                                            var x = eval("(" + data + ")");
                                            var text="[";
                                            var dataarry = new Array(dobj.root.length);
                                            for (var i in x) {                                
                                                dataarry[i]=x[i].postdate;
                                                text+="'"+x[i].postdate+"'";
                                                if(i!=dobj.root.length-1){
                                                    text+=",";
                                                }
                                            }
                                            text+="]";
                                            alert(text); 
                                            value=text;
                                        }
                                    });
                                    return value;
                                }(),
                        labels: {
                            rotation: -45, //字体倾斜
                            align: 'right',
                            style: { font: 'normal 13px 宋体' }
                        }
                    },
                    yAxis: {//Y轴显示文字
                        title: {
                            text: '温度/℃'
                        }
                    },
                    tooltip: {
                        enabled: true,
                        formatter: function() {
                            return '<b>' + this.x + '</b><br/>' + this.series.name + ': ' + Highcharts.numberFormat(this.y, 1);
                        }
                    },
                    plotOptions: {
                        line: {
                            dataLabels: {
                                enabled: true
                            },
                            enableMouseTracking: true//是否显示title
                        }
                    },
                    series: [{
                        name: '温度',
    //                    data:[13.00,14.00,14.21,15.00,15.50,16.00,19.00,18.70,17.10,14.00]
                        data:function(){
                        var value = '';
                        $.ajax({
                            url:'ashx/Handler.ashx',
                            async:false,//设置为同步,
                            data:{ time: new Date().getTime() },
                            success:function(data){
                                alert(data);
                                var dd = "{root:" + data + "}";
                                var dobj = eval("(" + dd + ")");
                                var x = eval("(" + data + ")");
                                var text="[";
                                var dataarry = new Array(dobj.root.length);
                                for (var i in x) {                                
                                    dataarry[i]=x[i].intvalue;
                                    text+=x[i].intvalue;
                                    if(i!=dobj.root.length-1){
                                        text+=",";
                                    }
                                }
                                text+="]";
                                alert(text); 
                                value=text;
                            }
                        });
                        return value;
                    }()
                        
                    }]
                    });
                }); 
        </script>这个是那JS的所有代码
      

  15.   

    最终效果:
    现在效果:我写那个function就是为了得到categories: ['10:18:13','10:20:11','10:21:03','10:53:08','10:55:14','10:56:16','10:57:21','10:58:29','10:59:33','11:10:33'],
      

  16.   

    跟回调函数没关系,直接 url返回数据就可以了吧
      

  17.   

    插件地址...http://www.cnblogs.com/xyzxzh2009/archive/2012/04/06/2434065.html
    json解析什么的都才开始学.....
      

  18.   


    LZ  遇到没效果 一般先检查2个问题  
    1、数据类型
    LZ的function;里面是用字符串拼接的。。   你查查你返回的数组是什么类型  我猜是字符串..2、实现代码问题 不多说。。
      

  19.   

    LZ刚接触JSON   给个建议json是json   字符串是字符串   
      

  20.   

    没效果是必然的。 return value; 时,那ajax的值还没到。
      

  21.   

    1.先用ajax取到數據,然后創建圖表對象,同時把數據傳給對象
    2.摟收的數據是字符串,還是數組要搞清楚,你return text的是字符串,categories的值要求是數組
    $.ajax({
        url: 'xxx',
        success: function(data) {
            var text = [];
            ...
            var chart = new Highcharts.Chart({
                ...
                categories: text;
                ...
            });
        }
    });
      

  22.   

    看清楚再说,ajax使用的同步模式,懂么?
    出现楼主所说的问题,应该是value的值是字符串造成的。将return value 改为 return eval('('+value+')')(意思是将字符串转化为对象);试试看。
      

  23.   


    顶32楼!那些叫LZ把异步改同步的,都好坏哦~~,那还不如让LZ叫后端的同事在html生成的时候一并查出数据来输出算了。伦家用异步就是为了表格数据的加载和页面加载分离,提高用户体验的说。这下子又换成同步加载了,异步的优势都木有了。32楼才是正解呢。LZ把ajax请求和new Highcharts的代码顺序弄颠倒了。正确的做法应该是先ajax异步请求,在回调中拿到数据后再new Highcharts。可惜是异步,return搞不定,因为时空都错乱了,so,ajax回调再new Highcharts才是正解,异步改同步是偏方啊!