JavaScript警告框在PHP重定向后无法显示

3

我想在重定向到另一个页面之前显示一个警告框,这是我的代码。当我删除头部函数时,它可以正常工作,但当它存在时,它只会重定向到页面而不显示警告框。

<html>
    <body>
        <?php
        include("dbconfig.php");

        $tempid = mysqli_real_escape_string($dbconfig, $_POST['tempid']);

        $sql_query = "DELETE FROM Visits
    WHERE visitid = '$tempid'";
        $result = Mysqli_query($dbconfig, $sql_query);
        if ($result) {

            echo '<script language="javascript">';
            echo 'alert("visit deleted successfully")';
            echo '</script>';

            header("location:../SearchCountry/search.php");
        }
        ?>
    </body>
</html>

$result 必须为 null。 - jaibatrik
1
它能够显示,但是即时重定向却破坏了所有的乐趣。 - Alex Lomia
PHP正在服务器端执行。一旦在浏览器中呈现,<script>将被执行... - Rayon
因为头函数正在执行,所以它不为空。 - Xtrem fabz
我明白了,使用JavaScript代码等待“确定”按钮被按下,然后重定向应该可以解决问题,但是在PHP中使用JavaScript有点麻烦。 - Xtrem fabz
显示剩余2条评论
2个回答

6

PHP是在服务器端执行的。它呈现HTML/JS/CSS并将其发送到Web浏览器,然后Web浏览器解析并执行JavaScript(在您的情况下,显示警告对话框)。

然而,一旦您调用

header ("location:../SearchCountry/search.php");

浏览器会立即将用户重定向到../SearchCountry/search.php,没有机会解析和执行JavaScript。这就是为什么对话框不会显示的原因。
解决方案:使用JavaScript将用户重定向到另一个页面,而不是PHP。
 <html>
 <?php
 include("dbconfig.php");

 $tempid = mysqli_real_escape_string($dbconfig,$_POST['tempid']);

$sql_query = "DELETE FROM Visits
WHERE visitid = '$tempid'";
$result = Mysqli_query($dbconfig,$sql_query);
if($result){
    echo '<script language="javascript">';
    echo 'alert("visit deleted successfully");\n';
    echo 'window.location.href="../SearchCountry/search.php"'; //Redirects the user with JavaScript
    echo '</script>';
    die(); //Stops PHP from further execution
}
 ?>
</body>
</html>

5
echo "<script>
alert('visit deleted successfully');
window.location.href='SearchCountry/search.php';
</script>";

并且删除下面的重定向行。

你混淆了两个不同的世界。


朋友,你真棒!它说我必须等待7分钟才能标记为答案,哈哈,因为我在这里是个新手,所以我不知道为什么。你有没有想过如何让警告框使用两个按钮,比如“确定”和“取消”? - Xtrem fabz
1
@Xtremfabz 使用 confirm 而不是 alert =) - Naresh Kumar
1
你可以使用if else语句,因为confirm函数返回true或false,你可以用它来控制是或否。var answer = confirm("访问已成功删除"); if (answer){ // 如果用户点击了“是” window.location.href='SearchCountry/search.php'; } else{ // 如果用户点击了“否” document.write("抱歉"); } - Naresh Kumar
回答附带解释总是很好的,可以参考下面Kevin的答案,了解更详细的情况。 - HoldOffHunger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接