我在login_Submit.php文件中有一些逻辑,它检查用户的角色类型,然后将它们指向正确的仪表板(即管理员,主管或学生)。
重定向很好并且运行良好,但是不是加载整个页面我的代码加载登录页面中的仪表板页面,所以它看起来像这样:
何时应重定向并完全加载页面,如下所示:
我假设它与jQuery有关,但我不完全确定问题是什么。
jQuery代码:
function loginCall() {
var data = $('#loginForm').serialize();
$.post('LoginSubmit.php', data, function(response){
$("#loginForm").html(response);
}).fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );
});
}
基于角色类型的重定向:
if($user_record_id == false)
{
$message = "<p class='text-danger'>Login Failed</p>";
}
/*** if we do have a result, all is well ***/
else
{
/*** set the session user_id variable ***/
$_SESSION['user_record_id'] = $user_record_id;
// echo $user_record_id;
switch( $user_role_code){ //not sure whether to use role_type_code or role_title because i want the name rather than the code
case 1:
echo "Wrong Username or Password";
case 2:
header("location:AdminDashboard.php");
break;
case 3:
header("location:SupervisorDashboard.php");
break;
case 4:
header("location:StudentDashboard.php");
break;
}
}
更新
jQuery代码:
function loginCall() {
var data = $('#loginForm').serialize();
$.post('LoginSubmit.php', data, function(response){
$("#loginForm").html(response);
window.location.replace(response);
}).fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );
});
}
基于角色类型的重定向:
if($user_record_id == false)
{
$message = "<p class='text-danger'>Login Failed</p>";
}
/*** if we do have a result, all is well ***/
else
{
/*** set the session user_id variable ***/
$_SESSION['user_record_id'] = $user_record_id;
// echo $user_record_id;
switch( $user_role_code){ //not sure whether to use role_type_code or role_title because i want the name rather than the code
case 1:
echo "Wrong Username or Password";
case 2:
echo "AdminDashboard.php";
break;
case 3:
echo "SupervisorDashboard.php";
break;
case 4:
echo "StudentDashboard.php";
break;
}
}
仍然没有运气:(
答案 0 :(得分:0)
即使你注释掉//header("location:SupervisorDashboard.php");
,你也可以看到它加载了登录页面。
您已在loginForm
$("#loginForm").html(response);
这里发生的是您加载登录信息并在内部发生重定向。
我想,你不需要这里的Jquery。您可以删除该代码,只需从服务器端执行此操作。
答案 1 :(得分:0)
您无法直接使用AJAX调用重定向页面。
为什么不header("location: SomePage.php")
echo "SomePage.php";
作为通话的结果
然后,使用返回的页面,如果必须,可以使用Javascript重定向:
window.location.replace(response);
编辑:实际上,您可以在没有JQuery和AJAX的情况下执行此操作,这是一种更简单的方法。像这样设置表单:
<form action="LoginForm.php">
...
</form>
在LoginForm.php
上,请务必使用header()
重定向到正确的页面:
header('Location: SomePage.php');