如何重新发送失败的Ajax请求?
我有多个Ajax请求每分钟都有一些请求数据,而其他请求是由用户通过ui发起的。
$.get('/myurl', data).done(function( data ){ // do stuff..
});
该请求可能由于身份验证失败而失败。我设置了一个全局.ajaxError()
方法来捕获任何失败的请求。
$(document).ajaxError(function( e, jqxhr ){ // Correct error..
});
发现错误后,我将重置授权。重置授权是可行的,但是用户必须手动重新启动ajax调用(通过ui)。
如何使用最初发送的jqxhr重新发送失败的请求?
(我将jQuery用于Ajax)
回答:
发现此帖子表明可以很好地解决此问题。
最主要的是使用$
.ajaxPrefilter并将您的错误处理程序替换为一个自定义的错误处理程序,该程序将检查重试并使用闭包的’originalOptions’执行重试。
我发布代码是为了防止将来将来离线。同样,信用归原始作者所有。
// register AJAX prefilter : options, original options$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
originalOptions._error = originalOptions.error;
// overwrite error handler for current request
options.error = function( _jqXHR, _textStatus, _errorThrown ){
if (... it should not retry ...){
if( originalOptions._error ) originalOptions._error( _jqXHR, _textStatus, _errorThrown );
return;
};
// else... Call AJAX again with original options
$.ajax( originalOptions);
};
});
以上是 如何重新发送失败的Ajax请求? 的全部内容, 来源链接: utcz.com/qa/410715.html