2013-02-07 28 views
0

我想將電子郵件發送到大量的聯繫人,我希望能夠測量發送的程度,即顯示一個加載欄,顯示百分比在發送電子郵件時發送。下面是HTML是否有可能從PHP服務器接收來自Ajax的響應

<div id="loading" style="height:20px;"></div> 

然後Javascript代碼

$.ajax({ 
    type: "POST", 
    url: "engine/send-mail.php", 
    data: "action=sendmail", 
    success: function (Databack) { 
     $('#loading').css('width', Databack); 
    } 
}); 

注意PHP服務器端代碼

$query = "SELECT email FROM clientsdata"; 
while ($data = mysql_fetch_array($query)) { 
    extract($data); 
    mail_user($email, $subject, $message); 
    $no++; 
    echo $no."px;"; 
} 

更像一個進度條,但它不工作。

回答

0

你不能這樣做,因爲你的php只會在腳本結束時纔會響應。

你可以做的是將一個ID鏈接到你的數據庫的每個電子郵件,所以之後你將能夠通過javascript中的UID數組來循環鏈接ajax調用。

-1

您需要一個異步請求。有幾種方法可以做到這一點,比如長輪詢或Web套接字。我不確定是否有任何框架,但this posting似乎是相關的。

0

在這個post看看關於使用jQuery顯示阿賈克斯的數據進來。

0

您可以查詢例如。 40個電子郵件地址,而非全部。然後多次給你發電子郵件腳本,每次ajax呼叫你發送下一封40封電子郵件...所以你可以非常容易地設置一個progess欄。 也許在您的數據庫中創建一個電子郵件隊列,併發送所有電子郵件,並且每個ajax調用都會從隊列中刪除已發送的電子郵件。

+0

是啊,並轟炸了大量的請求服務器... – SolidSnake

相關問題