1

Json Response を取得し、Google Plots 内のデータをプロットする呼び出しを行う関数があります...この関数を 90 秒ごとに実行して、チャートを最新のデータで更新します....

これはうまく機能しますが、処理中にブラウザが数秒間フリーズするように見えます (ローダーがフリーズしても) グラフ部分がフリーズしても問題ありませんが、ローダーやその他のアイテムをフリーズさせたくありません UI が必要ですグラフが更新されている間も機能します。

$.ajaxを変更する必要があるかもしれません

コードは次のとおりです。

function UpdateCharts() {
clearInterval(timerId);
BuildLineChart('power-chart', $('#datePower').val(), '1,28,32');
BuildLineChart('voltagecurrent-chart', currentDate, '13,15,17,5,7,9');
BuildLineChart('phasekw-chart', currentDate, '2,3,4');
BuildLineChart('phasevoltage-chart', currentDate, '13,15,17');
BuildLineChart('phasecurrent-chart', currentDate, '5,7,9,11');
timerId = setInterval(UpdateCharts, 90000);
}


// document ready function
$(document).ready(function() {
setTimeout(UpdateCharts, 5000);
});

折れ線グラフを作成してから、次のようにします。

 function onDataReceived(seriesData) {
            var p = $.plot(placeholder, seriesData.seriesData, options);
        }

        $.ajax({
            url: '/Charts/LineChart?SeriesToGraph=' + dataPoints + '&DatePull=' + chartDate,
            method: 'GET',
            async: false,
            cache: true,
            dataType: 'json',
            beforeSend: function() {
            $("." + placeHold + "-loader").html('<img src="/Assets/images/loaders/circular/066.gif" />');
            },
            complete: function() {
            $("." + placeHold + "-loader").html('');
            },
            success: onDataReceived
        });
4

3 に答える 3

9

async: falseを指定すると、ブラウザーは要求が完了するまで待機してから処理を続行します。async: true に変更すると、ブラウザがロックされなくなります。

于 2012-09-13T19:32:55.707 に答える
5

設定しましasync: falseた。に設定するとasync: true、AJAX リクエストが非同期で発生し、ブラウザがフリーズすることはありません。

于 2012-09-13T19:32:55.020 に答える
0

試したことはありますか

async: true

?

ここから 。同期リクエストはブラウザを一時的にロックし、リクエストがアクティブな間はすべてのアクションを無効にする場合があることに注意してください。

于 2012-09-13T19:35:40.273 に答える