如何重新发送失败的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

回到顶部