我正在为我的网站使用登录系统。
我正在做的是,当用户点击提交按钮时,正在执行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'并且它不包含任何行,以便我们可以修剪它。
答案 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 ==),希望它可以工作。