在 PHP 中调用 javaScript 警报后,重新加载页面将不起作用

Reloading a page won't work after calling a javaScript alert in PHP

本文关键字:加载 不起作用 新加载 调用 PHP javaScript      更新时间:2023-09-26

我的网站中有一个contact-us页面。当用户提交表单时,它将转到mailIt.php并执行必要的操作来发送该邮件。发送后,它将刷新代码。

由于我想添加通知来通知用户邮件已发送,因此我更改了代码以在页面中显示javaScript警报。但是在该警报之后将显示并且页面加载将停止,它将保留在mailIt.php页面中(带有inout文本)。

@mail($email_to, $email_subject, $email_message, $headers);
?>
    <script type="text/javascript">
        alert("Thank you for contacting us!");
    </script>
<?php
echo("in");
header('Location: /contact_us.html');   
echo("out");

我添加的唯一部分是,

?>
    <script type="text/javascript">
        alert("Thank you for contacting us. We will be in touch with you very soon !");
    </script>
<?php

为什么会这样?我怎样才能防止这种情况发生?

请记住,在发送任何实际输出之前必须调用 header() http://php.net/manual/en/function.header.php

您将在调用 header() 函数之前发送 javascript 弹出窗口。

一个解决方案是打印javascript弹出窗口,然后加载./contact_us.html的内容并将其打印到您的页面,如下所示:

echo '<script type="text/javascript">
alert("Thank you for contacting us!");
</script>';
$html = file_get_contents('./contact_us.html');
echo $html;

如果你想确保邮件已经发送,你应该把mail()函数放在一个if()语句中。 mail()返回一个布尔值:如果成功,则为 true,如果失败则为 false。

if(mail($email_to, $email_subject, $email_message, $headers)){
    echo '<script type="text/javascript">
    alert("Thank you for contacting us!");
    </script>';
    $html = file_get_contents('./contact_us.html');
    echo $html;
}
else{
    echo 'Oops, something went wrong!';
}