我有一个登录页面,用户输入电子邮件和密码
所以,我能够对另一个页面进行ajax调用以配置数据
现在,如果电子邮件和密码正确,则必须将用户重定向到名为“#34; home"。”的新页面。
我尝试了,但是,它将div重定向到了页面
任何解决方案?
提前谢谢大家!
<script type="text/javascript">
$(document).ready(function (e) {
$(".login-form").on('submit',(function(e) {
e.preventDefault();
$.ajax({
url: "verify/login.php",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
success: function(data)
{
$(".login-result").html(data);
},
error: function()
{
}
});
}));
});
</script>
这是一个简单的请求代码,它的工作完全正常 现在,在php文件中,这是login.php。
if ($email == $dbemail && $password == $dbpassword) {
header("location:home");
}
在此代码页面中,&#34; home&#34;以div显示,&#34;登录结果&#34;。
答案 0 :(得分:0)
问题是在ajax请求之后,login.php
脚本使用302(重定向)状态代码将标头发送回浏览器,然后浏览器发送另一个主页的GET请求,以及该请求的结果作为ajax调用的成功返回。因此,您将完整的主页放在.login-result
div。
现在,如果您只是在成功函数中使用window.location
调用,您将获得上述所有内容以及主页的另一个GET请求。
一种解决方案是将响应作为JSON对象发送成功或错误状态。例如:
// login.php
if ($email == $dbemail && $password == $dbpassword) {
die( json_encode( [ 'success' => 1 ] ) );
} else {
die( json_encode( [ 'success' => 0, 'error' => 'invalid username or password' ] ) );
}
这样您就会知道登录是否成功,然后您可以选择相应的操作(重定向或显示错误)。更不用说避免不必要的请求了。
dataType: 'json',
success: function( data )
{
if ( data.success ) window.location = "home.php"; // change location
else $(".login-result").html( data.error );
}