jQuery AJAX 请求 302 重定向 - 哪些回调可用?

标签 jquery redirect jquery-callback

我正在使用一个使用 jQuery 1.2.6 的旧系统。我通过 jQuery.ajax 函数发送 AJAX 请求。它所访问的 URL 正在发送 302 HTTP 重定向响应,并最终以 200 HTTP OK 响应结束。我已经注册了 successcomplete 回调,但是它们都没有被调用。

我的问题是:重定向发生后是否可以/将调用任何回调?

jQuery.ajax({
    type: "GET",
    url: url,
    data: null,
    dataType: "json",
    async: false,
    success: function(data, textStatus) {
        alert("SUCCESS CALLED: " + textStatus);
    },      
    complete: function(xhr, status) {
        alert("COMPLETE CALLED");
    }
});

注意:响应是 HTML,而不是 JSON,但是将 dataType 更改为 html 会更改请求。它发送 OPTIONS 请求而不是 GET 请求,并且也不再重定向。我需要进行这些重定向。

最佳答案

根据评论:

Changing the dataType to html alters the request. It sends an OPTIONS request instead of a GET request, and it also no longer redirects.

当您发送跨域请求时,就会发生这种情况。即,url 不指向与提供此脚本的域相同的域。这即违反了Same Origin Policy 。无法访问服务器代码也确认它在不同的域上运行。 HTTP OPTIONS jQuery 发送的请求应该让服务器返回一个带有 Allow 的响应。 header 包含允许在特定 URL 上使用的请求方法列表,以便 jQuery 可以相应地继续。这显然没有发生。

如果服务器确实完全超出您的控制范围,您需要在服务器上创建一个代理来连接所需的 URL 并将其响应流式传输回来。然后更改 jQuery url 以指向代理 URL。目前尚不清楚您使用的是什么编程语言,但您的问题历史记录表明您熟悉 Java,在这种情况下,您可以使用 java.net.URLConnection 的简单 servlet或Apache HttpComponents Client为此。

关于jQuery AJAX 请求 302 重定向 - 哪些回调可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6254219/

相关文章:

javascript - Highcharts:获取 x 轴显示图例

java - response.sendRedirect 到来自 Chrome 的文件 URL

.htaccess - htaccess/mod_rewrite/SSL |如果 : http off and (basket or order), 301 https,否则 301 http

iOS - 加载不工作

jQuery 插件 : Using callback to alter plugin behavior

javascript - NVDA 屏幕阅读器无法与大型菜单键盘导航一起使用

javascript - 三秒后隐藏 Bootstrap 工具提示

javascript - 使用 Angular js 、 jQuery 和 Css 突出显示搜索到的文本

jquery ajax 忽略 500 状态错误