【问题标题】:How to toggle a modal with Javascript/PHP?如何使用 Javascript/PHP 切换模式?
【发布时间】:2020-02-05 14:37:15
【问题描述】:

我正在尝试使用 PHP 函数触发模式弹出窗口。到目前为止,我已经达到了这一点:

PHP / Javascript 代码被注入:

<?php
if($show_modal == true) {
   echo "<script>";
   echo "$('#myModal').modal('show');";
   echo "</script>";
} 
?>

PHP函数:

<?php
if($show_modal == true) {
   echo "<script>";
   echo "$('#myModal').modal('show');";
   echo "</script>";
} 
?>

代码已正确注入网站,因为它将执行一个测试警报脚本,并且当由按钮触发时,该函数中使用的 javascript 运行良好。我在这里遗漏了什么吗?

【问题讨论】:

  • PHP是服务器端的,它与你的模态是否在客户端打开无关。
  • PHP 在服务器端运行,在页面发送到浏览器之前只运行一次。 JavaScript 在客户端运行,在浏览器中打开页面后运行。因此,除非您发送事件包并通过 ajax 重新绘制/重新加载页面或页面部分,否则 php 无法控制或在页面中对用户的操作执行任何操作。

标签: javascript php jquery


【解决方案1】:

您应该检查放置该代码的位置,可能是您的脚本放置在 DOM 加载元素之前。

所以,如果生成的 html 是:

<script>
   $('#myModal').modal('show');
</script>
<body>
   <div id="myModal"></div>
<body>

它可能不起作用,因为您试图显示一个不存在的对象。所以你应该把它放在 div 元素之后或者使用 document ready 事件。

<script>
   $(document).ready(function() { 
      $('#myModal').modal('show');
   });
</script>
<body>
   <div id="myModal"></div>
<body>

【讨论】:

    【解决方案2】:

    首先,您的代码不是函数。一个函数会这样完成:

    function showmodal() {
        echo "<script>";
        echo "$('#myModal').modal('show');";
        echo "</script>";
    }
    
    if($show_modal == true) {
        showmodal();
    }
    

    PHP 将运行一次。但是,如果您希望实时发生某些事情(典型的弹出窗口)-您可能需要考虑以不同的方式编写代码-可能使用 Javascript。为了给你一个很好的答案,如果你能提供更多信息会很有帮助。 $show_modal 变量是什么?什么条件导致它为“真”或“假”?

    【讨论】:

      【解决方案3】:

      您应该使用带切换功能的功能。

      if($show_modal == true) {
      showmodal();
      }
      
      function showmodal() {
      echo "<script>";
      echo "$('#myModal').modal('toggle');";
      echo "</script>";
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-20
        • 2013-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-04
        相关资源
        最近更新 更多