使用带有jQuery的Location标头在POST后重定向

dea*_*mon 5 javascript ajax jquery redirect http

我想使用LocationjQuery 1.7 的标头重定向到目标.

我的代码看起来像这样

$('#creationLink').click(function(){
  $.ajax({
    type: 'POST',
    url: '/',
    success: function(data, textStatus, xhr) {
      window.location = xhr.getResponseHeader("Location");
    }
  })
});
Run Code Online (Sandbox Code Playgroud)

......但它不起作用.xhr.getResponseHeader("Location")一片空白.

HTTP标头:

POST / HTTP/1.1
Host: localhost:9000
X-Requested-With: XMLHttpRequest
Content-Length: 0

HTTP/1.1 302 Found
Content-Type: text/plain; charset=utf-8
Location: http://localhost:9000/vIRdD0PdWp4/bearbeiten
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)

如何使用位置标题重定向?

Jan*_*ger 16

AFAIK,浏览器应该在XHR期间透明地跟随响应头中的重定向.也就是说,XHR实际上会查看响应,查看Location标头,然后继续神奇地运行该URI的第二个请求.只有当它的结果将它给你任何东西,以及它给你的是结果第二请求.

看到 这个stackoverflow答案!

因此,如果您需要重定向功能,则必须使您请求的内容以其他方式返回目标URI,例如作为JSON响应.

请参阅 此stackoverflow解决方案!

PS.参考:http://www.w3.org/TR/XMLHttpRequest/#infrastructure-for-the-send-method

  • @JanKrüger,我一直在读这个问题,并找到了解决这个问题的答案.由于没有必要在此处发布与您的内容相同的新答案,因此我放置了链接以补充您的信息! (6认同)