jQuery AJAX - 使浏览器在重定向头中请求新位置

时间:2008-11-28 13:21:15

标签: jquery ajax

jQuery ajax能否让浏览器请求服务器发送的重定向头中的新位置?

3 个答案:

答案 0 :(得分:3)

您应该解析代码并使用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:

     <iframe src="blank.html" name='hiddenframe' id='hiddenframe' onload='readyLoad()'>

然后使用像这样的一些Javascript

var first = true;
function setRedirect (url) {
 hiddenframe.location = url;
}
function readyLoad() {
 if( first == true ) { first = false; return false; }
 else {
 alert( 'ready loading, was redireced too:' + myFrame.location.href );
 //Use new location code
}
}

您应该使用jQuerys内置函数将这些函数包装到漂亮的小事件处理程序中(它们很棒)。

答案 1 :(得分:3)

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(与您所在的页面相同)。

答案 2 :(得分:0)

没有尝试过jQuery,快速查看doc并没有真正告诉我重定向响应的处理方式。但是在Prototype JS中,除了2xx“Success”之外的任何响应代码都是onFailure事件,因此重定向是失败的。您可以在错误块中解析响应(以某种方式)以查看它是什么代码并获取地址,您可以将document.location设置为...但它听起来不太安全或不实用。

打印某种错误更常见。或者,如果请求需要登录用户,则假定会话已超时并重定向到登录页面。