0

在我使用 ajax 执行未授权的 GET 请求后,我试图让我的服务器重定向我的应用程序。但是,当我获得重定向(服务器发送带有 /login.html 位置的 303 )时,我在查看 firebug 控制台中的“响应”选项卡时在我的响应中获得了 login.html 的完整 HTML(也许这是正常的,我'不确定)。然后在萤火虫中查看它,我看到它正在尝试进行重定向,但控制台只是在执行该操作(从未完成处理它)。我曾尝试在网上找到一些相关信息,但没有成功,我找到的最接近的是:HERE。

这是我在 JavaScript 中处理这个问题的方式:

function doSomethingAwesome()
{
  try
  {
     ajaxObject.open("GET", serverLocation+ '?action=getSomeInfo', true);
     ajaxObject.send();
  }
   catch(err){}
}

ajaxObject.onreadystatechange = function()
{
  if(ajaxObject.status == 200 && ajaxUsers.readyState == 4)
  {
    do some stuff
  }
}

我的响应头有以下信息: 303 See Other Connection: Keep-alive Date Location: /login.html Server nginx/1.2.7 Transfer-Encoding: chunked 所以 onreadystatechange 函数不应该真正影响重定向(据我了解) 但我想我会把它扔在那里。实际上,这里应该发生的所有事情都是我与服务器交谈以加载一些信息,它看到我没有登录(无论是 GET 还是 POST),我应该收到一个重定向到登录页面(这不会'不会发生)。抱歉,如果这听起来像漫无边际,我感谢任何人可以提供的任何建议或帮助。

4

1 回答 1

1

这里的问题是您仅重定向 ajax 请求,而不是导航到该新 url。window.location.href您必须通过在onreadystatechange函数内进行更改来执行重定向。

于 2013-04-29T22:19:20.590 回答