所以我得到了这个jQuery AJAX调用,响应以302重定向的形式来自服务器。我想将这个重定向加载到一个iframe中,但是当我尝试查看带有javascript警告的头信息时,它显示为null,即使firebug正确地看到了它。
下面是代码,如果有帮助的话:
$j.ajax({
type: 'POST',
url:'url.do',
data: formData,
complete: function(resp){
alert(resp.getAllResponseHeaders());
}
});
我真的无法访问服务器端的东西来将URL移动到响应正文,我知道这是最简单的解决方案,所以任何帮助解析报头都是非常棒的。
发布于 2010-11-21 10:02:06
如果您使用的是旧版本的jquery,cballou的解决方案将会起作用。在较新的版本中,您还可以尝试:
$.ajax({
type: 'POST',
url:'url.do',
data: formData,
success: function(data, textStatus, request){
alert(request.getResponseHeader('some_header'));
},
error: function (request, textStatus, errorThrown) {
alert(request.getResponseHeader('some_header'));
}
});
According to docs XMLHttpRequest对象从jQuery 1.4开始可用。
发布于 2010-08-08 04:28:56
var geturl;
geturl = $.ajax({
type: "GET",
url: 'http://....',
success: function () {
alert("done!"+ geturl.getAllResponseHeaders());
}
});
发布于 2012-02-07 04:30:34
关于AJAX和302重定向的不幸事实是,您不能从返回中获取标头,因为浏览器从未将它们提供给XHR。当浏览器看到302时,它会自动应用重定向。在本例中,您将在firebug中看到标头,因为浏览器获得了它,但在ajax中看不到它,因为浏览器没有传递它。这就是成功和错误处理程序永远不会被调用的原因。只调用完整的处理程序。
http://www.checkupdown.com/status/E302.html
The 302 response from the Web server should always include an alternative URL to which redirection should occur. If it does, a Web browser will immediately retry the alternative URL. So you never actually see a 302 error in a Web browser
这里有一些关于这个主题的stackoverflow帖子。一些帖子描述了绕过这个问题的黑客。
How to manage a redirect request after a jQuery Ajax call
https://stackoverflow.com/questions/1557602
复制相似问题