【发布时间】:2008-11-28 13:21:15
【问题描述】:
jQuery ajax 能否让浏览器请求服务器发送的重定向标头中的新位置?
【问题讨论】:
-
您的问题看起来模棱两可。如果您希望浏览器完全重定向到新页面,那么 Pim Jager 回答了您的问题。
jQuery ajax 能否让浏览器请求服务器发送的重定向标头中的新位置?
【问题讨论】:
jQuery 做了它应该做的事情:自动跟随重定向并去获取最终页面。
你可以去http://jigsaw.w3.org/HTTP/300/测试一下。在那里打开firebug并通过编辑HTMLhead并添加在页面中注入jquery
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.2.6.js"/>
到它。然后去控制台运行
$.get("http://jigsaw.w3.org/HTTP/300/301.html", function(r){
alert(r);
});
并且警报会显示重定向页面的 HTML(与您所在的页面相同)。
【讨论】:
你应该解析代码并使用Javascript来设置document.location
$.get('page.php', { GETvar : 'redirectUrl' }, function(data, textString){
if (textString == "succes") { //Succes!
document.location = data;
}
else{ // failure }
});
如果您的 PHP 脚本返回一个有效的 url,这会将位置设置为该 url。
编辑
您也可以像这样使用隐藏的 iFrame:
html:
【讨论】:
没有尝试过 jQuery,快速浏览一下文档并不能真正告诉我重定向响应的处理方式。但是在 Prototype JS 中,除了 2xx "Success" 之外的任何响应代码都是 onFailure 事件,因此重定向是失败的。您可能可以(以某种方式)解析错误块中的响应以查看它是什么代码并获取地址,您可以将 document.location 设置为...但这听起来不太安全或不实用。
打印某种错误更为常见。或者,如果请求需要登录用户,则假定会话已超时并重定向到登录页面。
【讨论】: