2013-11-01 47 views
0

我正在爲我的客戶之一開發自定義電子郵件系統,作爲我爲我的客戶建立的CMS的附加內容。我使用jQuery Ajax將所有信息發送到格式化電子郵件的PHP文件,向MySQL發送查詢以獲取數據庫中的所有電子郵件地址,並使用mail()發送電子郵件。這需要一段時間,我希望jQuery ajax每次PHP腳本發送電子郵件時都顯示一個進度條。我搜索了一些與成功相似的東西:function()通過JSON接收來自PHP腳本的數據,允許jquery更新電子郵件的進度。

有沒有人有這方面的建議?像這樣的東西是可取的:

$.ajax({ 
     type: "POST", 
     url: "example.com", 
     data: {"test":"test","tester":"tester"}, 
     PROGRESS: function(data){ 
     $("div").html(data); 
     }, 
     success: function(r){ 
     alert(r); 
     } 
    }); 

}); 

回答

2

您可以使用XHR對象並附加一個事件監聽器進度事件

$.ajax({ 
    //... 
    xhr: function() { 
     var xhr = new window.XMLHttpRequest(); 
     xhr.addEventListener("progress", function(e) { 
      var p = e.loaded/e.total; 
      // update your progress bar here.. 
     }); 
     return xhr; 
    } 
}) 
+0

爲了得到這個工作,我需要改變xhr.addEventListener(「進步」 ....) line to xhr.upload.addEventListener(「progress」,....) - 否則,這是一個有用的建議。 – charlesdeb

0

您將需要包裝這setInterval()功能的內部。您可以搜索AJAX輪詢。但這裏的想法是,在運行時不能定期從相同的PHP腳本發送回來的信息,在腳本完成後,只會觸發一次回調。

相關問題