gpt4 book ai didi

javascript - 为什么 window.location.href 没有完成 $.post...?

转载 作者:行者123 更新时间:2023-11-28 19:54:23 25 4
gpt4 key购买 nike

我正在制作一款类游戏,与大多数游戏一样,用户需要完成一个级别才能进入下一个级别。在我的第一个关卡中,我在 If 语句下使用它来确定用户是否已赢得该关卡:

if (passOnLevel == 0 && passengerCarrying == 0) {
alert("You Win!");
$.post("gameL2.php", {"Level1": "Level1"});
window.location.href='gameL2.php';
}

在我的 gameL2.php 文件中,我在文件顶部有以下内容:

<?php session_start(); ?>
<?php
if (isset($_POST['Level1'])) {
$_SESSION['Level1'] = $_POST['Level1'];
}
?>

我遇到的问题是,当我使用 window.location.href='gameL2.php; 时,$_POST 未设置,但是如果我删除 window.location.href= 'gameL2.php; 它不会将用户重定向到下一个级别,但是当我直接访问 gameL2.php 文件时,会设置 $_POST。如何才能将用户重定向到二级,但仍设置 post 变量?

最佳答案

问题是 $.post 是异步命令,因此当您调用它时,您会立即调用 location.href$.post 没有时间实际发表这篇文章。

所以你需要做的是:

if (passOnLevel == 0 && passengerCarrying == 0) {
alert("You Win!");
$.post("gameL2.php", {"Level1": "Level1"}, function() {
window.location.href='gameL2.php';
});
}

基本上,您正在传递一个 $.post 将在完成时调用的函数。更多信息请参见https://api.jquery.com/jQuery.post/

但是,这并不能解决第二个文件中未设置 $_POST 的问题,因为调用 $.post 和打开 gameL2.php 是两个调用,并且数据发送无法以这种方式工作。

所以,最后,你最好的选择可能是:

if (passOnLevel == 0 && passengerCarrying == 0) {
alert("You Win!");
window.location.href='gameL2.php?Level1=Level1';
}

然后检查 gameL2.php 中的 $_GET["Level1"]

关于javascript - 为什么 window.location.href 没有完成 $.post...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22849411/

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