我有多个Ajax请求每分钟都有一些请求数据,而其他请求是由用户通过ui发起的。
$.get('/myurl', data).done(function( data ){ // do stuff.. });
该请求可能由于身份验证失败而失败。我设置了一个全局.ajaxError()方法来捕获任何失败的请求。
.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); }; });