2014-02-27 82 views
0

我有一個用Cold Fusion編寫的網站。其中一個頁面是我的主要搜索區域,其中有一個表單提交給我的results.cfm頁面。在results.cfm上,我有幾個cfinclude模板語句,它們在每個文件中調用,用於從用戶搜索的內容構建頁面。頁面加載時更新模態對話框

取決於什麼,頁面有時會需要一段時間的用戶搜索加載。我想顯示一個指示搜索進度的模式對話框。在結果頁面上的每個包含的模板具有在第一線

<cfset session.progressStatus = "Loading [whatever it's loading]"> 

在我的搜索表單,我有這樣,當用戶提交表單,我展示的模態對話框。這一切都很好,但是在顯示對話框之後,我使用下面的代碼嘗試對腳本進行ajax調用,該腳本簡單地給了我session.progressStatus變量的值。我認爲通過這種方式做事,當頁面加載時,對話框將繼續顯示,並且會更新文本以反映當前操作。然而,這種情況並非如此。對話框文本不會更改。真奇怪的是,當我單擊搜索並顯示對話框時,如果我點擊了轉義鍵,對話框文本開始相應地更新,但頁面停止加載。

 progressTimer = setInterval(function(){ 
     $.get("ajax/ajax_get_progress.cfm", { type:"progress" }, function(result){ 
      result = result.replace(/^\s+|\s+$/g,''); 
      console.log('result is: ' + result); 
      progressMessage = (result=="") ? "Performing Search" : result; 
      $progressIndicatorMessage.html(progressMessageStart + progressMessage + progressMessageEnd); 
     }); 
    }, 1000); 

任何人有任何想法,爲什麼?我很困惑。

+0

我認爲模態對話框是一種處理這種情況的不好方法。在頁面正在處理時,有更多更好的方式來娛樂用戶。至於爲什麼轉義鍵停止加載頁面,這是默認的瀏覽器行爲。 –

+0

@DanBracuk更好的方式來娛樂用戶,而頁面正在處理....建議? – Phil

回答

0

迴應,「更好的方式來逗用戶在該頁面正在處理....建議?」,......,

Here are some references for a progress bar.

另一種選擇是立即顯示一個圖像文件在div和cfflush中,然後當頁面處理完畢後,替換div的內容。這將需要使用cfsavecontent和javascript。 Here are some links

另一種選擇,如以上所描述的顯示圖像。使用cfsavecontent,但使用會話變量。然後使用cflocation轉到另一個輸出會話變量的頁面。這可能是最簡單的選擇,另外,它可能會忽略按下退出鍵。你必須驗證。

相關問題