gpt4 book ai didi

javascript - 如何重定向到 json 请求类型的任何其他页面?

转载 作者:行者123 更新时间:2023-11-28 02:29:58 25 4
gpt4 key购买 nike

只要没有 session ,我的应用程序就会将用户重定向到登录页面。但对于 Ajax 请求,这种重定向不会发生。

我需要处理应用程序中所有 ajax 调用的重定向问题。

最佳答案

我在 Zend/PHP 项目上做了类似的事情。不幸的是,我不熟悉 Java,因此我只能建议基本方向。

默认情况下,XMLHttpRequest 执行重定向。因此,如果您在 ajax 请求期间进行重定向,XMLHttpRequest 将执行它,而不会让您知道重定向发生了。至少我找不到办法捕捉这种情况并以某种方式处理它。因此,在服务器端我重写了重定向方法。假设您也可以在 Java 中执行类似的操作。一旦请求来自 ajax(您可以向 ajax 请求添加一些特定 header 并在服务器上检查它),您可以返回与 Location header 不同的 header 。例如,New-Location,并且不执行实际的重定向。只需停止请求执行即可。

在客户端,您可以使用 jQuery.ajaxSetup一次为所有 ajax 请求配置全局处理程序。以下是如何使用 .ajaxSetup 向所有请求添加 header :

$.ajaxSetup({
headers: {
XHTTPRequest: 'true'
}
});

此外,您还可以设置全局 ajaxSuccessajaxError处理程序。它们将在单独的 ajax 请求的任何成功/错误处理程序之前执行。在全局 ajax 成功中,您可以从作为第三个参数传递给回调函数的 xhr 对象中获取 header 并执行重定向:

var newLocation = xhr.getResponseHeader("New-Location");
if(newLocation)
document.location = newLocation;

基本上,您可以返回特殊对象而不是 header ,或者找到其他方法将新位置传递给 ajaxSuccess 回调。

关于javascript - 如何重定向到 json 请求类型的任何其他页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14376722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com