Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery AJAX请求302重定向-有哪些回调可用?_Jquery_Redirect_Jquery Callback - Fatal编程技术网

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

jQuery AJAX请求302重定向-有哪些回调可用?,jquery,redirect,jquery-callback,Jquery,Redirect,Jquery Callback,我使用的是一个使用jQuery 1.2.6的旧系统。我正在通过jQuery.AJAX函数发送一个AJAX请求。它命中的URL正在发送302 HTTP重定向响应,并最终以200 HTTP OK响应结束。我已经注册了成功和完成回调,但是它们都没有被调用 我的问题是:在重定向发生后,是否有任何回调可以/将被调用 jQuery.ajax({ type: "GET", url: url, data: null, dataType: "json", async: fa

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

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

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,但是将
数据类型更改为
HTML
会改变请求。它发送一个
OPTIONS
请求,而不是
GET
请求,并且不再重定向。我需要执行这些重定向。

根据评论:

数据类型更改为
html
会更改请求。它发送一个
OPTIONS
请求,而不是
GET
请求,并且不再重定向

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


如果服务器真的完全不受您的控制,您需要在服务器上创建一个代理,该代理连接所需的URL并将其响应流返回。然后将jQuery
url
改为指向代理url。不清楚您使用的是哪种编程语言,但您的问题历史表明您熟悉Java,在这种情况下,您可以使用一个简单的servlet来实现这一点。

使用jquery ajax选项

数据类型:“jsonp”

对跨域请求执行重定向。 (在FF/Chrome浏览器中进行了测试)


但是,只有当您不处理响应或者跨域url支持jsonp方法时,此解决方案才有用

您有权访问服务器代码吗?浏览器可以透明地处理302个响应,但是当收到200状态码时,应该最终调用success函数。嗨,Ben,谢谢你的帮助。我没有访问服务器代码的权限。关于
success
回调,我有一个
alert
调用,作为一个简单的测试。在通过Firebug发出XHR请求后,一旦点击200,就不会显示警报对话框。您可以发布一些代码吗?从服务器发送的响应数据是否与ajax调用中指定的数据类型相同?上面添加了代码。响应是HTML,而不是JSON。将
数据类型更改为
html
会更改请求。它发送一个
OPTIONS
请求,而不是
GET
请求,并且不再重定向。感谢您提供的信息。这让我们回到原来的问题。鉴于上述代码,使用
json
作为
dataType
GET
请求,重定向后是否可以/将调用任何回调?要确认,URL是否指向其他域?如果是,那么您需要在自己的域上使用代理。如果没有,那么我就没有一个可行的解释来解释你所看到的问题。它一定是一个跨域请求。对于自己域上的请求,jQuery/XHR将以透明的方式处理。感谢您的帮助,BalusC。是的,它确实指向另一个域。