jQuery ajax能否让浏览器请求服务器发送的重定向头中的新位置?
答案 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设置为...但它听起来不太安全或不实用。
打印某种错误更常见。或者,如果请求需要登录用户,则假定会话已超时并重定向到登录页面。