2012-01-31 83 views
2

我有一個通過ajax調用執行的sql查詢,但我需要能夠檢查它的進度並更新進度條。

這裏是我的簡單的Ajax調用(使用JQuery):

var strResult = (($.ajax({url: URL,async: true}).responseText)); 

任何想法如何,我聽更改更新了吧?

PS。這個問題與SQL無關。

+0

哪個數據庫系統?並非所有人都提供進度信息。 – Polynomial 2012-01-31 16:10:17

+0

這不是真正的問題!但是,sql語句是循環的,所以我可以回發回聲。 – ojsglobal 2012-01-31 16:17:23

+0

可能的重複:http://stackoverflow.com/questions/399641/ajax-page-download-progress – tkone 2012-01-31 16:37:16

回答

-1

如果您可以將查詢分解爲多個可單獨執行的組件,則可以不斷詢問服務器的進度。

例如,如果你需要插入大量的數據到數據庫,而不是使一個巨大的請求到DB:

INSERT INTO table VALUES (..), (..), .. ; 

可以分解成許多插入語句:

INSERT INTO table VALUES (..); 
... 
INSERT INTO table VALUES (..); 

然後在任何階段,你總是可以計算可以給你的百分比的行數。

例如,你知道你想插入20000行。然後,使用一個AJAX調用,這將做到這一點的服務器:

SELECT COUNT(*) FROM table 

將返回一個人數多達20000可以計算出百分比。

另一種解決方案是使用websockets,但這將需要大量的配置。

+1

同樣,這不是真正的問題。這個問題與SQL無關。 我想知道我如何可以聽到異步的ajax調用? 我可以添加某種Eventlistener嗎? – ojsglobal 2012-01-31 16:33:19

+1

你是什麼意思聽。 ajax請求很簡單。步驟1.您提出請求。第2步:服務器處理它。第3步。服務器返回答案。在步驟2時,除非使用Web套接字,否則無法與服務器通信。他們的唯一方法是同時進行兩個Ajax請求。首先請求你想要的動作。其次,要輪詢第一個進展。 – miki725 2012-01-31 16:37:22