我有一个jQuery ajax调用看起来像这样:
jQuery( document ).on( 'mouseover', '#wp-admin-bar-noti-bar-new', function() {
jQuery.ajax({
url: "domain.com",
// etc
success:function(data){
// change element id
jQuery('#wp-admin-bar-noti-bar-new').attr('id','wp-admin-bar-noti-bar');
}
});
});
因此,如果ajax调用成功,则会更改元素。我的问题是,我如何做到这一点,如果10秒后呼叫失败,它应取消并做一些事情(如显示提醒)。
我该怎么做?
答案 0 :(得分:5)
您可以在AJAX调用上设置timeout
并处理该错误情况。
jQuery.ajax({
url: 'domain.com',
timeout: 10000, // ten seconds in milliseconds
.
.
.
error: function(request, status, err) {
if (status === "timeout") {
alert("Timeout");
}
}
});
注意,我部分地使用了this answer来制定我的答案。
一旦发送了AJAX请求,就会发送它们。你不能在服务器端真正做太多关于它们的事情(参见this answer)。
但是,您可以在客户端取消它们。 request
参数是jqXHR
对象,允许您使用request.abort();
中止通话所以你的功能看起来像这样:
error: function(request, status, err) {
if (status === "timeout") {
request.abort();
alert("Timeout");
}
}