如果我因为不想挂起浏览器而不真正关心响应,如何中止 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 消息。
当服务器继续做它的事情时,我怎样才能在 20 秒后安静地忽略响应?