2012-09-13 194 views
1

我有一個函數可以調用Json響應並繪製Google Plots中的數據...我每90秒執行一次該函數,以便使用最新的數據更新我的圖表。 ..

但是,無論何時它處理它似乎鎖定瀏覽器幾秒鐘(甚至加載程序凍結),我很好,如果圖形部分凍結,但我不想裝入程序或其他項目凍結我希望UI在圖形更新時仍能正常工作。

有人可以幫助我,也許我應該改變$就

這裏是代碼:然後

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 
     }); 
+0

我有一個類似的問題,我的ajax函數在第一次運行時凍結。我正在使用.get()並嘗試使用.ajac()和asynch true並仍凍結瀏覽器。偶爾我會得到瀏覽器錯誤:腳本需要很長時間才能響應... yada yada。在第一次加載完成後,我似乎會在任何進一步的請求中運行。 – elzaer

回答

8

async: false導致瀏覽器在繼續之前等待請求完成。將其更改爲async:true,並且不會鎖定瀏覽器。

+1

我試着用真,它仍然凍結:( –

+0

是唯一的BuildLineChart?因爲否則它絕對不應該被阻止。 – technophile

+0

我有同樣的問題,但我只是需要async設置爲false。它是jQuery的bug還是什麼? – nikoloza

5

你有async: false集。如果您將其設置爲async: true,那麼您的AJAX請求將異步發生,並且應該不會凍結您的瀏覽器。

+1

我試了真,它仍然凍結:( –

0

你曾經與

async: true 

試過嗎?

here。請注意,同步請求可能會暫時鎖定瀏覽器,並在請求處於活動狀態時禁用任何操作。

+1

我試着用真,它仍然凍結:( –