我有一个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');
}
});
});
Run Code Online (Sandbox Code Playgroud)
因此,如果ajax调用成功,则会更改元素.我的问题是,我如何做到这一点,如果10秒后呼叫失败,它应取消它并做一些事情(如显示警报).
我怎样才能做到这一点?
您可以设置timeoutAJAX调用并处理该错误情况.
jQuery.ajax({
url: 'domain.com',
timeout: 10000, // ten seconds in milliseconds
.
.
.
error: function(request, status, err) {
if (status === "timeout") {
alert("Timeout");
}
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,我在一定程度上使用了这个答案来表达我的答案.
一旦发送了AJAX请求,就会发送它们.你不能在服务器端对它们做太多的事情(参见这个答案).
但是,您可以在客户端取消它们.该request参数是一个jqXHR允许您使用中止调用的对象,request.abort();因此您的函数将如下所示:
error: function(request, status, err) {
if (status === "timeout") {
request.abort();
alert("Timeout");
}
}
Run Code Online (Sandbox Code Playgroud)