【问题标题】:PHP echo not showing SweetAlert2 pop-upPHP echo 未显示 SweetAlert2 弹出窗口
【发布时间】:2020-03-04 13:27:03
【问题描述】:

当用户将用户名/密码输入框留空时,我正在尝试输出 SweetAlert2 消息框。

if(empty($_POST["username"]) || empty($_POST["password"]))  
       {  
           echo '<script language="javascript">';
           echo 'Swal.fire({
                          type: \"error\",
                          title: \"Oops...\",
                          text: \"Please provide login credentials!\"
                          })';
           echo '</script>'; 
       }  

我已包含 \ 以转义引号,但根本没有出现消息框。有什么想法吗?

【问题讨论】:

  • 浏览器的控制台是否有任何输出或错误?
  • 你把swal库放到html里了吗?
  • 尝试删除\https://3v4l.org/WGf34
  • “我已经包含 \ 来转义引号” - 为什么?你的 PHP 字符串定界符是单引号,所以为了 PHP 的缘故,双引号不需要转义。您在此处的实际 JavaScript 输出在这些地方显示为 type: \"error\",,这是错误的。

标签: javascript php echo sweetalert sweetalert2


【解决方案1】:

为了避免大量转义,我通常在 PHP 中编写较大的 HTML 块,如下所示:

<?php
if(empty($_POST["username"]) || empty($_POST["password"])) {
?>
<script>
    Swal.fire({
        type: "error",
        title: "Oops...",
        text: "Please provide login credentials!"
    });
</script>
<?php } ?>

您的代码没有生成有效的 JavaScript,因为转义 \ 不是必需的,因此将被输出。您浏览器的 JavaScript 引擎不知道 type: \"error\" 应该是什么,您可能会在控制台中看到错误。

确保在显示警报的代码之前包含 SweetAlert2(使用 CDN 的示例):

<script src="https://cdn.jsdelivr.net/npm/sweetalert2@9"></script>

也许你的身体底部有这个包含,但你的情况在你的页面中间?

编辑:HTML &lt;script/&gt; 元素的 language 属性是 deprecated,应该省略。

【讨论】:

  • 感谢您的帮助!我已经听从了你的建议,但它仍然没有显示任何弹出框。我在代码之前包含了 jQuery 和 SweetAlert2 链接,但仍然没有。有什么我想念的吗?
  • 浏览器控制台(F12 -> 控制台)输出什么?
  • “Uncaught TypeError: Cannot read property 'querySelector' of null”是即将出现的错误
  • @AoifeDooley 你能上传你的代码并分享一个链接吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-12
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
相关资源
最近更新 更多