【问题标题】:javascript alert box not showing on php after header redirect标头重定向后,javascript警告框未显示在php上
【发布时间】:2016-05-01 14:21:54
【问题描述】:

我试图在重定向到另一个页面之前显示一个警告框,这是我的代码,当我删除标题功能时它可以正常工作但是当它在这里时它只会重定向到页面而不显示警告框。

<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 必须为空。
  • language="javascript" 是从 2002 年开始的吗? stackoverflow.com/questions/2267476/…
  • 它正在显示,但 insta-redirect 正在扼杀所有乐趣
  • PHP 正在服务器端执行。一旦在浏览器中呈现,&lt;script&gt; 将被执行...
  • 它不为空,因为头函数正在执行

标签: javascript php html


【解决方案1】:

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>

【讨论】:

    【解决方案2】:
    echo "<script>
    alert('visit deleted successfully');
    window.location.href='SearchCountry/search.php';
    </script>";
    

    并摆脱下面的重定向行。

    你把两个不同的世界混在一起了。

    【讨论】:

    • 感谢你,我的朋友,它说我必须等待 7 分钟才能标记为答案哈哈,因为我是这里的菜鸟,我不知道为什么,碰巧你知道我该怎么做该警报框使用两个按钮,例如“确定”和“取消”?
    • @Xtremfabz 使用确认而不是警报 =)
    • 你可以使用if else,因为confirm函数返回true或false你可以用它来控制是或否var answer = confirm("visit deleted successfully") if (answer){ // if user click on yes window.location.href='SearchCountry/search.php'; } else{ //if user click on no document.write("sorry"); }
    • 带有解释的答案也总是好的。 (有关正在发生的事情的更完整描述,请参见下面凯文的回答。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2011-12-03
    相关资源
    最近更新 更多