为什么在使用window.location和window.location.href时不使用javascript重定向Page

时间:2015-04-24 08:49:40

标签: javascript php html ajax redirect

我正在为我的网站使用登录系统。 我正在做的是,当用户点击提交按钮时,正在执行ajax请求以定位用户登录的php脚本,如果用户成功登录,则echo's返回消息" login_successful&# 34;到ajax请求。通过使用if语句,我检查消息是否是" login_successful" else显示错误。

如果消息是" login_successful"该脚本将用户重定向到新页面' user.php'使用window.location = 'user.php'; //I have also tried this. window.location.href = 'user.php';

但它不起作用它只是停留在登录页面上,没有任何反应。 但是当我在登录后检查页面源但没有重定向发生时,我惊讶地发现该页面的源代码是user.php而不是login.php。不知何故,window.location没有重定向页面,但将user.php的来源带到login.php。一切都搞砸了,我无法解决问题。

这是执行ajax请求然后重定向用户的登录功能 -

function login()
{
    var e = _("email").value;// Grab the email input by the user.
    var p = _("password").value;// Grab the password input by the user.
    if(e === "" || p === "")// Check if they are empty.
    {
        _("status").innerHTML = "Fill out all the form data";//Display error message if fields are empty.
    }
    else
    {
        _("loginbtn").style.display = "none";// Hide the login button
        _("status").innerHTML = 'please wait ...';//Tell the user to wait while the script works.
        // Below id another function which is defined in other js file.
        var ajax = ajaxObj("POST", "login.php"); //start the ajax request.
        ajax.onreadystatechange = function()// Wait for the request to be complete
        {
            if(ajaxReturn(ajax) === true) // Ensures if the response is recieved
            {
                var response = ajax.responseText;// Put the response in a variable
                if(response === 'login_successful')// Check if user is logged in succesfully.
                {
                    window.location = 'user.php';//Redirect the user to the new page.(Not working)
                }
                else
                {
                    _('status').innerHTML = response;// Display the response
                    _("loginbtn").style.display = "block";// Display the login button
                }
            }
        };
        ajax.send("e="+e+"&p="+p);
    }
}

我在64位Windows机器上使用最新版本的chrome。

更新

好的家伙我已经确认通过php脚本的回复是' login_successful'并且它不包含任何行,以便我们可以修剪它。

4 个答案:

答案 0 :(得分:0)

在响应条件和响应之间通过警报检查结果使用

window.location.href='correctfilepath.php';

要重定向的文件的正确路径。检查你的user.php,因为如果它在代码

中有一些错误,它将不会打印任何内容

答案 1 :(得分:0)

如果你使用location我更喜欢使用绝对路径。也许这是你的问题,重定向将与此一起工作。例如:

location.href = '/user.php';

如果您想重定向到网址,请执行以下操作:

location.href = '//www.google.com';

(它将根据当前方案自动使用http或https。

答案 2 :(得分:0)

尝试设置重定向的完整网址

window.location = window.location.protocol +" //" + window.location.host +" /user.php"

而不是 window.location =' user.php';

编辑:

window.location =" //" + window.location.host +" /user.php"

Javascript重定向也可以在没有协议(http或https)的情况下工作。

答案 3 :(得分:0)

if(response === 'login_successful')// Check if user is logged in succesfully.
                {
                    window.location = 'user.php';//Redirect the user to the new page.(Not working)
                }
                else
                {
                    _('status').innerHTML = response;// Display the response
                    _("loginbtn").style.display = "block";// Display the login button
                }

在你给出了_(' status')的else块中.innerHTML = response;检查块是否正在执行,如果它正在执行,然后尝试在if条件中更改(=== as ==),希望它可以工作。