【问题标题】:jQuery AJAX - made browser request new location in redirect headerjQuery AJAX - 使浏览器在重定向标头中请求新位置
【发布时间】:2008-11-28 13:21:15
【问题描述】:

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

【问题讨论】:

  • 您的问题看起来模棱两可。如果您希望浏览器完全重定向到新页面,那么 Pim Jager 回答了您的问题。

标签: jquery ajax


【解决方案1】:

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】:

    你应该解析代码并使用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 ajax 获取标头响应的方法
    • 我认为您不能通过 AJAX 发送重定向标头。 AJAX 表示 2## 响应代码是成功的,所有其他(如 3## 重定向响应代码)都是失败的。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-10
      • 2013-01-23
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多