2014-02-08 32 views
0

我正在學習和試驗jquery/ajax,因爲我開發的網站。我有一個更新數據庫的頁面。當用戶提交他們的數據時(我已經在其他網站上看到過這種情況),我希望在屏幕上顯示一系列響應。是否有可能'回聲'從ajax調用響應序列

例如...用戶提交表單和頁面顯示: 接收到的輸入 檢查數據庫 - Recond(活化)號XY 更新數據庫 檢索信息 等等等等

這只是一個例子,但你的想法。

我有一個AJAX調用在開始提交按鈕的「點擊」(getFormData只是串行化所有的表單數據,我和正常工作):

var toSend = getFormData($upgrade_db_form); 
var formMessageBox = $("#displayResults"); 

$.ajax({ 
     url: ajaxurl, 
     data: { 
      action: "database_action", 
      formData : toSend 
     }, 
     type: 'POST', 
     dataType: 'TEXT', 
     beforeSend: function() { 
      //$form.fadeOut('slow'); 
      formMessageBox.html("starting it up"); 
     }, 
     success: function (data) { 
      formMessageBox.empty(); 
      formMessageBox.html(data); 
     error: function (xhr) { 
      // formMessageBox.html("Oops error!");      
     } 

}); 

我有一個它獲取通過調用函數AJAX:

function upgrade_database_function() { 
    echo "testing "; 

    for($i = 0; $i < 99; $i++) { 
     echo "percent complete ".$i."%"; 
    } 

    echo "done "; 
    die(); // this is required to return a proper result 
} 

我使用Wordpress和工作正常,它正確等傳遞表單數據的事情一切阿賈克斯,這只是我得到一個長時間的輸出就像它的cache'ing所有回波的了而不是依次輸出它們。

我已經通過jquery ajax文檔,並找不到如何使其行爲我想要的方式。我可以按照它的方式生活,但我認爲如果能按我想要的方式工作,情況會好很多。

可以這樣做,或者我需要大量的順序ajax調用,使其工作?

+1

這可能有所幫助:http://stackoverflow.com/questions/5919557/live-ajax-data-based-on-data-throuhg-php-file –

回答

2

我不知道PHP,但我猜測回聲只是寫入響應緩衝區......所以當所有的回聲完成後,整個響應將被返回,你會得到的效果是你看到...你需要用輪詢系統或者沿着這些線路去獲取服務器的最新狀態並顯示它們,我想......也許在PHP中有一些系統允許這樣做,但是作爲我說,我不知道PHP。

在本文中可以找到長輪詢的一個示例。 http://www.abrandao.com/2013/05/11/php-http-long-poll-server-push/

警告:您可能必須做在PHP中的會話鎖定的一些手工管理,使您長時間運行調用不會鎖定您的投票Ajax調用:在這裏看到:

http://konrness.com/php5/how-to-prevent-blocking-php-requests/

注意,你很可能會想:

  • 創建一個Ajax調用啓動一些編碼的執行,這將需要一段時間...你庫侖d將已生成的消息放入會話變量中,例如放在某種列表中。您需要按照提及的方式鎖定/解鎖會話,以防止暫停AJAX輪詢呼叫。
  • 您將創建一個像文章中那樣的輪詢方法,可以每隔500毫秒檢查會話或查看是否有更多消息,鎖定會話,刪除這些消息並將這些消息返回給客戶端並顯示它們。

警告:同樣,我不是一個PHP的人,我可能曾經在我的生活在PHP這樣做(不記得確切),但我可能是錯的,這可能無法工作,從儘管看起來它是可以實現的,但我看到了。希望這會讓你順其自然!

+0

是的,當所有的回聲完成後,響應將返回。 +1投票 –

+0

是的,那是我看到的行爲。有沒有人有任何想法如何改變行爲,使其'順序'? –

+0

在PHP中添加了一些關於長輪詢的信息。希望這足以讓你在路上... – jwwishart

相關問題