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

Joh*_*ohn 5 jquery redirect jquery-callback

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

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

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");
    }
});
Run Code Online (Sandbox Code Playgroud)

注意:响应是 HTML,而不是 JSON,但是更改dataTypehtml改变请求。它发送OPTIONS请求而不是GET请求,并且也不再重定向。我需要这些重定向发生。

Bal*_*usC 2

根据评论:

更改dataTypehtml改变请求。它发送OPTIONS请求而不是GET请求,并且也不再重定向。

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

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