【问题标题】:How to call a php with parameter from a <script> in HTML? [duplicate]如何从 HTML 中的 <script> 调用带有参数的 php? [复制]
【发布时间】:2021-03-27 07:00:02
【问题描述】:

我正在构建一个包含“更改”事件的 Datepicker(信用 css/js:gijgo.com)。它允许在用户选择日期时激活代码:

<!-- Date picker script-->  
     <script>
        $('#datepicker').datepicker({ 
            calendarWeeks: true, 
            modal: false,
            header: true,           
            footer: false, 
            format: 'yyyy-dd-mm',
            weekStartDay: 1,
            width: 133,
            change: function (e) {
            alert('Change is fired');
         }
        });
     </script>

我的 PHP 文件将使用选择的日期作为参数从 MySQL 表中获取数据

<?php
$argument1 = $argv[1];

我怎样才能插入这个 PHP 以便它被称为“更改”? 以这种方式编码实际上是一种好习惯吗?

我刚开始使用 PHP/HTML 脚本进行编码。对我缺乏知识表示歉意。

【问题讨论】:

    标签: javascript php html


    【解决方案1】:

    您可以使用 AJAX 将数据发送到 PHP

    【讨论】:

      【解决方案2】:

      使用 Javascript 的 Change 事件并调用一个函数,在该函数中,您可以使用 jQuery 和 ajax 将您的 datepicker 数据传递给 php 文件,您可以在 ajax 调用中使用 get 或 post 方法并使用 $_POST 和 $_GET 全局变量在那个 php 文件中接收数据,然后编写你常用的 mysql 代码来获取数据并返回它

      【讨论】:

        【解决方案3】:

        您不能使用 Javascript 设置 php 变量,因为 php 在服务器上运行,而 Javascript 在浏览器中运行。您需要将数据发送回您的服务器,以便服务器更新您的变量。首选方法是使用 AJAX,否则您可以创建隐藏输入并将日期选择器中的值加载到其中。这样,您可以触发一些表单提交以将数据发送到服务器。

        <input type="hidden" id="datepickerVal" />
        
        <!-- Date picker script-->  
         <script>
            $('#datepicker').datepicker({ 
                calendarWeeks: true, 
                modal: false,
                header: true,           
                footer: false, 
                format: 'yyyy-dd-mm',
                weekStartDay: 1,
                width: 133,
                change: function (e) {
                  $('#datepickerVal').val(e.newDate); //assuming e.newDate gives you date value
                }
            });
         </script>
        

        【讨论】:

        • 我做了以下事情:
        【解决方案4】:

        我想我找到了答案:

        在主 html 部分,我添加了一个 URL 解析

        <!-- Date picker script-->  
         <script>
            $('#datepicker').datepicker({ 
                calendarWeeks: true, 
                modal: false,
                header: true,           
                footer: false, 
                format: 'yyyy-dd-mm',
                weekStartDay: 1,
                width: 133,
                change: function redirect () {
                      // (B1) APPEND THE JS VARIABLES AS QUERY STRING
                      var src = "get_date.php";
                      src += "?datepicker=" + document.getElementById("datepicker").value;
                      src = encodeURI(src);
                     
                      // (B2) REDIRECTION
                      window.location.href = src;
                      return false;
                    }
            });
         </script>
        

        然后在 PHP 文件中,我添加了以下内容:

        <?php
        
           $val = $_GET["datepicker"];
        
           // Create connection
            $conn = new mysqli($servername, $username, $password, $dbname);
           // Check connection
            if ($conn->connect_error) {
             die("Connection failed: " . $conn->connect_error);
            }
        
             $sql = "SELECT WeekID, DateNum, DayNum, Day_Desc_Short, Day_Desc_Long FROM datesTimesheet where DateNum = '$val'";
        
            $result = $conn->query($sql);
        
        
             $row = mysqli_fetch_array($result);
        
            echo $row["WeekID"];
        
              $conn->close();
        
          ?>
        

        这实际上提供了我需要的数据。 我遇到的新问题是日期选择器中的日期值是 yyyy-mm-dd 交付的。 MySQL 将其作为美国格式 (yyyy-dd-mm),所以现在正在努力。

        不过,我的方法正确吗?它安全吗?等等...最终现在,我只是在学习,所以不关注安全性,但想知道如何朝着正确的方向改进。

        【讨论】:

        • 也直接从脚本中解决了格式...那里做错了。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-20
        • 1970-01-01
        • 2017-03-06
        • 2014-09-21
        • 2013-08-19
        • 2013-07-27
        • 2019-02-03
        相关资源
        最近更新 更多