jQuery AJAX之后的重定向问题

时间:2014-04-29 12:07:22

标签: javascript jquery ajax redirect

我有以下代码,应该在AJAX方法完成后重定向到我网站的索引页面。它重定向,但页面没有加载任何内容,它只是一个带背景的空页。

function login(){
    var uname = document.getElementById("UserName").value;
    var upass = document.getElementById("Password").value;

    var response = $.ajax({ type: "POST",
        url: "../../php_scripts/ajax.php",
        data: "call=login(" + uname + ", " + upass + ")",
        async: false
    }).responseText;

    window.location.replace("http://www.domainname.com");
}

什么可能导致这个问题?这可能是服务器问题吗?

[编辑]

此外,如果我将重定向调用置于AJAX之上,则所有内容都会正确加载。

[编辑2]

如果我使用异步AJAX和任何类型的回调方法,它会导致完全相同的问题。我开始认为这是一个jQuery错误。

3 个答案:

答案 0 :(得分:0)

您需要在ajax调用成功时重定向。

如果您的请求是async:false,那么您不应该使用ajax.done(),ajax.fail()等方法来注册回调方法,而是需要使用success / error / complete选项传递回调方法ajax电话

$.ajax({
  async: false,
  success: function(){
        window.location.replace("http://www.domainname.com");
  },
  error: function(){
  },
  complete: function(){
        window.location.replace("http://www.domainname.com");
  }
})

答案 1 :(得分:0)

(代表OP发布)。

经过几个小时的修补后,我发现了问题的罪魁祸首。它与JavaScript或AJAX无关 - 实际上错误源自SQL数据库。设置关系约束设置不正确导致我的PHP记录更新方法失败。

这使得该方法将null返回给调用方法,然后将其保存到变量中,然后在该变量上调用成员方法。在null类型上调用成员方法打破了PHP,这就是我的页面上没有显示任何内容的原因。

答案 2 :(得分:-1)

使用complete回调重定向到所需的页面。完成请求后,您将被重定向到该页面。

试试这个:

function login(){
    // use jquery anyway if you reference to this
    var uname = $("#UserName").val();
    var upass = $("#Password").val();

    var response = $.ajax({ type: "POST",
        url: "../../php_scripts/ajax.php",
        data: "call=login(" + uname + ", " + upass + ")",
        async: false,
        complete: function() { 
            // redirects is done with below code
            window.location.replace("http://www.domainname.com");
        }
    }).responseText;
}