如何通过ajax调用将用户重定向到页面
How to redirect user to a page by an ajax call?
我有一个登录页面,用户在其中输入电子邮件和密码
所以,我能够对另一个页面进行ajax调用,以配置数据
现在,如果电子邮件和密码是正确的,那么它必须将用户重定向到一个名为"主页"的新页面
我试过了,但它将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>
这是一个简单的请求代码,它的工作完全正常
现在,在login.php.的php文件中
if ($email == $dbemail && $password == $dbpassword) {
header("location:home");
}
在这段代码中,页面"home"显示在div"login-result"中。
问题是,在ajax请求之后,login.php
脚本将标头发送回浏览器,其中包含302(重定向)状态代码,然后浏览器发送另一个针对主页的GET请求,该请求的结果将作为ajax调用的成功返回。因此,您可以在.login-result
分区中放置一个完整的主页
现在,如果您只在success函数中使用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 );
}
相关文章:
- 如何使用Ajax调用特定的控制器和操作来重定向用户
- 意思是.js - 登录后重定向用户 - 在本地工作,但在部署时不起作用
- 当用户在选择框中选择选项时,使用window.location.href重定向用户只会更改导航器中URL的最后一位
- 如何从特定国家/地区重定向用户
- 注销后如何重定向用户
- 如何在不重定向用户的情况下更改地址栏URL(不使用历史API?)
- 试图在表单post之后使用jQuery.post()重定向用户
- 根据React中的状态重定向用户
- 如何根据 html 中的选项/选择重定向用户(单击按钮后)
- 如果 cookie 为空 jquery,则设置和重定向用户
- 如果用户在发布之前没有设置密码,请重定向用户
- 使用 Javascript 根据设备重定向用户
- 如何删除未定义的对象错误并根据位置重定向用户
- 如何使用 PHP 而不是 JS 重定向用户
- 根据时区重定向用户
- 在 iframe 源更改后重定向用户
- Ionic (AngularJS) - 重定向用户和路由
- 成功提交表单后重定向用户
- 未重定向用户的控制器操作是从AJAX调用的
- 超链接没有't使用jQuery重定向用户