2016-09-30 56 views
0

我正在調用ajax調用來驗證n個數據。
由於需要花費很多時間才能完成,我想向用戶顯示進度欄或告訴1/n已完成
爲了顯示,我應該從控制器獲取狀態。

有人可以告訴我有沒有辦法在完成之前從控制器獲取狀態?或者還有其他更好的實施方式嗎?我們可以獲得Ajax調用的狀態,例如完成20%嗎?

+0

這是由Matthew Flaschen提供的有趣答案,可能會幫助你 http://stackoverflow.com/questions/3163229/check-status-of-a-jquery-ajax-request –

+1

首先關於你在說什麼框架關於。第二,我建議你發佈相關代碼,以便任何願意幫助你的人都能看到你在做什麼。所以要善良併發布你的代碼:) – Franco

回答

0

由於普通的AJAX是一個經典的請求 - 響應,所以無法從具有相同連接的服務器獲取進度信息。您必須進行新的AJAX調用才能向服務器請求任務進度。這被稱爲心跳池技術。

更好的解決方案是使用某種持久連接,例如Websockets。通過這種方式,服務器可以通過啓動任務的同一連接向客戶端推送帶有進度信息的消息。 Websocket在瀏覽器中的採用非常強勁。

+0

從問題中可以明顯看出,提問者想知道服務器任務的進度,而不是HTTP請求的進度。 – srigi

0

,你可以嘗試以下操作: 在您通過AJAX調用請求的php文件可以設置包含th的$ var e過程。 例如,您每5行增加一個var。增加後,您可以調用執行動畫過程的函數,或者僅以百分比形式回顯過程狀態。

<?php 

    $process = 0; 


    function foo(){ 
     doSomething(); 
     $process++; 
     showProcess(); 
    } 

    function showProcess($process){ 
     echo $process; 
     //some lazy effects 
    } 
?> 

這個方法的負面影響是(屬於複雜性)你的程序會慢一點。

相關問題