如果我不真正關心響應,我不想掛上瀏覽器,我該如何中止Ajax調用?Ajax調用掛起瀏覽器 - 我不關心迴應
情況是我有一個ajax調用,可能會在某些情況下觸發服務器發送超過1000封電子郵件。 99%的時間只有幾封或幾封電子郵件。 因此,通過1000個電子郵件ajax調用,瀏覽器在獲取成功消息之前有時會等待5分鐘,因此用戶必須等待。
我已經嘗試設置超時,但這仍然掛起。我想等待約20秒鐘,然後放棄等待響應。
var request = jQuery.ajax({
type: "post",url: "admin-ajax.php",
data: {
action: 'send_email',
emailHTMLMessage: tinyMCE.activeEditor.getContent(),
_ajax_nonce: '<?php echo $nonce; ?>'
},
timeout: 20000, //Set your timeout value
success: function(html){ //so, if data is retrieved, store it in html
window.scrollTo(0,0);
sendResults(html);
},
error: function(jqXHR, textStatus, errorThrown) {
if(textStatus==="timeout") {
<... I'd redirect to another html page here....>
} else {
alert("Another error was returned"); //Handle other error type
}
}
}); //close jQuery.ajax
我試過request.abort(),但是這會立即殺死它,服務器永遠不會收到send_email消息。
當服務器繼續做這件事情時,我該如何靜靜地忽略20secs之後的響應?
Ajax調用是異步的,所以你的瀏覽器不會被阻塞,也不需要等待任何東西。你可以放空成功。即使你在瀏覽器中離開,你的服務器腳本已經啓動,並可以使用'ignore_user_abort'和一個好的'set_time_limit'來完成它的工作:) – MatRt 2013-04-25 21:40:50