2011-07-30 114 views
1

我正在對一個執行一些昂貴操作的頁面(重新索引某些數據庫表)發出ajax請求。 這些需要時間,我想要顯示進度信息直到完成。多個AJAX響應

我該怎麼做?這可能嗎?因爲javascript等待頁面完成加載後才顯示所有消息...

回答

2

每個請求返回一條消息。繼續發出AJAX請求,直到收到特定的「完成」響應。這就是推動或「COMET」如何在幕後工作,你也可以使用適當的推動技術。

這裏隱藏/暗示的一點是你不應該在頁面腳本上進行昂貴的操作。

0

一個簡單的解決方案是保持對數據庫中用作標誌的變量進行輪詢,例如,當昂貴的操作完成時,它會設置您正在輪詢的標誌。希望能幫助到你。

0

我會在你的主內容div中嵌套一個加載div。將背景圖像設置爲AJAX加載器(您可以下載here)。當你點擊你指定的任何按鈕時,加載div將顯示,你的主要內容將有一個額外的CSS選擇器名稱。你可以使不透明度爲0.5或任何你想要的.main-content.loading。這裏是jQuery的:

$(".button").click(function(){ 
    $(".main-content").addClass(".loading"); 
    $(".main-content .loader").show(); 
    $.ajax({ 
     data: //whatever data, 
     type: "POST", 
     url: // whatever url, 
     success: function(d){ 
     $(".main-content").removeClass(".loading"); 
     $(".main-content .loader").hide(); 
     $(".enter-content").html(d); 
     } 
    }); 
});