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

标签 javascript ajax json

只要没有 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/

相关文章:

javascript - AWS S3 静态站点可以访问 VPC 中的 REST API 吗?

c# - 在 ASP .NET c# 中使用 JQuery 进行 Ajax

javascript - 通过 Ajax 成功函数传递参数

javascript - JSON 对象数组,用于 knockout 具有 Observable 属性的 Observable 数组

javascript - 使用可选对象解析 JSON?

javascript - 如何在屏幕上显示文件中的数据?

JavaScript 回顾正则表达式

javascript - 如果存在,则从数组中删除一个值,如果不存在,则将其推送到数组

javascript - jQuery 表单插件

javascript - NG-重复具有重复值的对象,而不在输出上复制它,而不使用过滤器和外部依赖项