ajax调用期间的重定向

Redirection during ajax call

本文关键字:重定向 调用 ajax      更新时间:2023-09-26

我是AJAX/jQuery的新手。我有两个按钮。每次点击按钮,我都需要向服务器发送一个AJAX请求。但在这个过程中,我还必须检查用户是否已登录。若用户并没有登录,他应该被重定向到登录页面,登录后他应该回到同一页面。同样在AJAX调用中,URL中指定的应用程序会检查用户是否登录,并将其重定向到登录页面。该应用程序包含为登录页面构建URL的功能。若用户已经登录,那个么将在应用程序中调用另一个函数。我现在面临的问题是,当我运行整个项目时,成功函数没有被调用。相反,会调用错误函数。但如果我将参数作为查询参数传递到URL,那么我将被重定向到登录页面。

例如:www.abc.com/application?X=1&Y=2

任何想法都将不胜感激。

{
  $.ajax({
    type: "GET",
    data: {
      X:param1,
      Y:param2,
    },
    url: "/application",
    success: function(data, status)
    {
      if (data.redirect) {
        window.location.href = data.redirect;
      } else {
        alert("success message");
      }
    },
    error:function()
    {
      alert("error message")
    }
  });
}

data.redirect将在假设数据是json对象的情况下工作。确保添加dataType:"json",到上面,它应该工作。使用Chromes网络面板检查服务器是否正确进行了回话。还要检查它返回的Mime Type。应为"application/json"。

错误函数在请求不成功时激发。它需要3个参数,但第二个是错误字符串。可以是"timeout"、"Error"、"abort"answers"parserror"。

试试这个,你可能会发现更多的调试信息;

{
  $.ajax({
           type: "GET",
           data: {
                  X:param1,
                  Y:param2,
               },
           url: "/application",
           success: function(data, status)
           {
             if (data.redirect) {
               window.location.href = data.redirect;
             } else {
               alert("success message");
             }
           },
           error:function(jqXHR, text)
           {
             alert("error message: "+text);
           }
    });

}