【问题标题】:Java script alert doesn't work in my php file?Javascript 警报在我的 php 文件中不起作用?
【发布时间】:2018-02-02 19:15:31
【问题描述】:
$data = mysqli_query ($conn,$query)or     die(mysqli_error($conn));
if($data)
{

    echo '<script language="javascript">';
    echo 'alert("YOUR REGISTRATION IS COMPLETED...")';
    echo '</script>';


    header("Location:booking.php");
}

(这是 reservation.php 和具有 booking.php 的同一文件夹)

【问题讨论】:

  • 你的 php 脚本的 HTML 输出是什么?
  • 提交后进入 booking.php 页面,没有任何警报 msg.@messerbill
  • 我敢打赌,您启用了输出缓冲。它会阻止echos 将输出发送到浏览器,因此标题会领先于火车。
  • 标题是浏览器收到的第一件事。重定向在 JS 执行之前触发。

标签: javascript php header alert url-redirection


【解决方案1】:

有很多方法可以简化这一点,但如果我要保持你想要的方式,那么应该这样做

$data = mysqli_query($conn,$query) or die(mysqli_error($conn));
if($data) {
      echo '<script type="text/javascript">';
      echo 'alert("YOUR REGISTRATION IS COMPLETED...")';
      echo '</script>';

      echo '<script type="text/javascript">';
      echo 'setTimeout(function() {';
      echo 'window.location.href = "http://stackoverflow.com"';
      echo '}, 5000); // <-- redirect after 5 seconds';
      echo '</script>';
}

【讨论】:

  • Thn @JeanPaul98
【解决方案2】:

基本上——你不能那样做。

浏览器不会在包含位置标头重定向的页面上执行 JS。 (至少是我测试过的那些。)浏览器渲染完整页面,执行所有 JS,然后将其丢弃并加载请求的重定向没有多大意义。如果您希望显示消息,然后在用户单击确认后重定向用户,您将制作一个表单或将一些自定义 JS 附加到按钮。

或者,您也可以使用通常所说的 Flash 消息。操作成功后,您将消息文本放入用户的会话中,然后立即重定向到新页面。新页面在会话中查找,如果它包含任何消息,则显示它。

【讨论】:

  • Flash 消息的附录:请确保在使用消息显示后立即将其从会话中清除,这样它就不会出现在之后的每一页上;)我知道这是常识行为,但必须说。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多