我们将身份验证委托给另一个域(Window Identification 框架,联合身份验证设置)。现在,如果会话在 ajax 请求之前超时,服务器会将请求重定向到身份验证服务器。由于变成跨域调用,ajax请求被浏览器取消。有没有办法可以在 jquery/javascript 中检测到这一点?
我检查了在这种情况下设置为 0 的 xhr 对象的状态属性,但它是否是取消请求的良好指标?(我正在使用 jquery $.ajax 发出 ajax 请求)
我们将身份验证委托给另一个域(Window Identification 框架,联合身份验证设置)。现在,如果会话在 ajax 请求之前超时,服务器会将请求重定向到身份验证服务器。由于变成跨域调用,ajax请求被浏览器取消。有没有办法可以在 jquery/javascript 中检测到这一点?
我检查了在这种情况下设置为 0 的 xhr 对象的状态属性,但它是否是取消请求的良好指标?(我正在使用 jquery $.ajax 发出 ajax 请求)
我也一直在研究这个问题,并且发现很少有证据表明你想要检测的东西是完全可以检测到的。但是,我找到了一种方法来检测它可能发生了。
以下是您的活动所发生的情况:
在您的错误回调中,检查您的XMLHttpRequest
对象的readyState
字段。如果为 0(“UNSENT”),则表示您的 AJAX 请求从未发送过。
当然,为什么不发送它可能并不总是完全清楚。例如,用户可能只是简单地拔掉了他的网络电缆。但是,如果您愿意假设网络运行良好,那么当您看到 时,也可以合理地假设readyState == 0
由于跨域问题而未发送请求。这意味着重定向发生了。
如果您正在使用 jQuery,那么您可以jqXHR.readyState
改为检查。
您可以查看此页面:http ://api.jquery.com/jQuery.ajax/
如果请求失败,您可以在其中捕获一个错误参数。
错误(jqXHR,textStatus,errorThrown)
希望这会有所帮助。