gpt4 book ai didi

ajax 响应中的 javascript 重定向

转载 作者:行者123 更新时间:2023-12-02 14:17:28 25 4
gpt4 key购买 nike

我的登录表单有一个模式。我使用 Ajax 提交登录表单。如果用户名和密码无效,我会显示一条消息以通知用户失败但如果登录数据有效,我想将用户重定向到dashboard.php这是我在 php 文件中编写的响应内容:

$action = $_GET['action'];
if($action=="checkLogin")
{
$result = check_login();
if($result=="failure")
{
echo "login failed";
}
else
{
echo 'success
<script>
window.location = "dashboard.php";
</script>
';

}
}

但它没有按我的预期工作。显示“失败”和“成功”,但成功时不会发生重定向请帮助我我是否错了?提前致谢

最佳答案

您的 PHP 无法控制客户端通过 AJAX 响应执行的操作;它无法设置 header 或重定向客户端。相反,您需要返回适当的成功或失败 HTTP 状态代码并根据该代码进行重定向。 200 状态表示成功,401 表示未经授权。 Click here了解有关 HTTP 状态代码的更多信息。

在 PHP 中,可以通过多种方式设置响应代码,具体取决于您的版本。我下面的例子是最简单的方法,应该在 PHP4 中工作,但是 Click here了解更多设置方法。

if($result == "failure") {
header("HTTP/1.1 401 Unauthorized");
echo "failure";
}
else {
header("HTTP/1.1 200 OK");
echo "success";
}

然后,您可以在 JavaScript 客户端中捕获这些状态代码,并在登录成功时进行重定向。如果您使用 JQuery,它可能看起来像这样:

$.ajax("example.php")
.done(function() {
// done() is called on any 200 response codes (200, 201, etc)
window.location = "dashboard.php";
})
.fail(function() {
// fail() is called on any 400 or 500 response codes (400, 401, 404, 500, etc)
alert("error");
});

值得注意的是,由于状态代码的原因,您不需要需要检查 javascript 中的响应正文中的“成功”或“失败”一词。浏览器和其他客户端已经被设计为可以优雅地处理 HTTP 响应代码,因此请尽可能多地使用它们。

关于ajax 响应中的 javascript 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38910727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com