1

以下は私のコードです。最初にJSONを使用してデータベースからデータをフェッチし、その後最初の15行をチャートにバインドし、setInterval関数で1秒間隔で1行を継続的にバインドしています。こんにちは") 最初の結果が得られません。アラートなしで結果を得るにはどうすればよいですか?

$(function () {
      $(document).ready(function () {
                var Data = "";
                var dataarray = [];
                var IdArray = [];
                var counter = 0;
                var chart;
                $('#container').highcharts({
                    chart: {
                        type: 'spline',
                        animation: Highcharts.svg, // don't animate in old IE
                        marginRight: 10,
                        events: {
                            load: function () {

                                var series = this.series[0];
                                setInterval(function () {
                                    var i = 16 + counter;
                                    var x = IdArray[i], // current time
                                     y = dataarray[i];
                                    series.addPoint([x, y], true, true);
                                    counter = counter + 1;
                                }, 1000);
                            }
                        }
                    },
                    title: {`enter code here`
                        text: 'Live HighChart From Database'
                    },
                    xAxis: {
                        type: 'decimal'

                    },
                    yAxis: {

                        title: {
                            text: 'Value'
                        }

                    },

                    series: [{
                        name: 'Data from database',
                        data: (function () {
                            // generate an array of random data

                            $.ajax({
                                type: 'POST',
                                dataType: 'json',
                                contentType: 'application/json',
                                url: 'LiveHighchart.aspx/GetData',  
                                data: '{}',
                                success:
                    function (response) {
                        Data = response.d;
                        for (var i = 0; i < Data.length; i++) {
                            dataarray[i] = Data[i].random;
                            IdArray[i] = Data[i].Id;
                        }
                    }
                            });
                            var data = [];
                            alert("hi");

                            for (var i = 0; i < 15; i++) {
                                data.push({
                                    x: IdArray[i],
                                    y: dataarray[i]
                                });
                            }

                            return data;

                        })()
                    }]
                });
            });

        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto">
        </div>
    </div>
    </form>
</body>
</html>
4

2 に答える 2

0

I Solved it myself ,code after ajax request was executing before ajax request loads data: this line (async: false) in ajax request forced code after ajax to pause until ajax loads data

于 2013-11-14T09:49:04.517 に答える
0

クエリがまだ結果を返していないためだと思います。アラートによってアプリが一時停止しているため、結果が間に合うように配信される可能性があります。コールバック (AJAX 呼び出しからのデータが返されたときにのみ実行される関数) の使用を検討する必要があります。

于 2013-11-13T14:16:50.297 に答える