【问题标题】:How can I pass a javascript value to php?如何将 javascript 值传递给 php?
【发布时间】:2014-12-02 08:36:59
【问题描述】:

我想在我的 php 查询中添加一个 javascript 值。代码是这样的

<script>
    $(document).on('click', '.dropdown-menu li a', function() {
    var categoryName = $(this).html();

    <?php
         $one = mysqli_query($con, "SELECT id FROM tb_category WHERE category_name = '?' ");
    ?>

    })

</script>

我想将 categoryName 的值放入我在 php 中进行的查询中。我该怎么做。

【问题讨论】:

  • 您可以进行 AJAX 调用并将数据发送到处理数据库查询的单独 PHP 文件。

标签: javascript jquery mysql sql


【解决方案1】:

今天就花几个小时自己想办法解决这个问题。您可以使用 ajax,并在 ajax 查询中使用数据标签发送信息。

   $.ajax({ url: 'file goes here',
          data: {action: '0'},
          type: 'post',
       success: function(output) { //action }
    });

数据标签为您提供信息。 在你的 php 中:

$data = $_POST["action"];

【讨论】:

    【解决方案2】:

    您应该使用 ajax 从您点击的 div 中获取属性并将其发送到您接收“javascript 变量”的 php 页面,并将其用作带有 $_POST 的 php 变量,如下所示:

      <script type="text/javascript">
      $(function() {   
     $(document).on('click', '.dropdown-menu li a', function() {
     {
     var categoryname = $(this).attr("id");   
     var dataString = 'categoryname'+ categoryname ;
    
    
    $.ajax({
    type: "POST",
    url: "yourphppage.php",
    data: dataString,
    cache: false,
    
    success: function(html)
    {
    
    $(".result").html(html);  
    } 
    });
    
    
    return false;
    });
    });
    

    现在在您的 php 页面中:

         $categoryname=$_POST['categoryname'];
    
         $one = mysqli_query($con, "SELECT id FROM tb_category WHERE category_name = $categoryname   
         ");
    

    【讨论】:

    • 但是我如何从查询中获取数据?我想要它是因为我想将它用于这些代码 echo "$('#region').val('" . $rowOne['category_name'] . "');";
    • 可以在一个div中返回查询得到的数据,在成功函数中选择该div $(".result").html(html);创建一个空的 div 并给它一个类名“result”现在查询的结果将被加载到类“result”的 div 中
    【解决方案3】:

    除非您进行 AJAX 调用,否则不会这样(参见http://api.jquery.com/jquery.get/ 和其他答案)。

    最简单的解决方案(如果您没有太多类别,比如几百个顶部)将在客户端缓存类别在 Javascript 变量中,如下所示:

    <script type="text/javascript">
        var categoriesCache = <?php
            $cache = array();
            $result = mysqli_query($con, "SELECT id, category_name FROM tb_category");
            while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
                $cache[$row["category_name"]] = $row["id"];
            }
            echo json_encode($cache);
        ?>;
        $(document).on('click', '.dropdown-menu li a', function() {
            var categoryName = $(this).html();
            var categoryId = categoriesCache[categoryName];
        });
    </script>
    

    【讨论】:

      【解决方案4】:
      <script>
      $(document).on('click', '.dropdown-menu li a', function(e) {
          e.preventDefault();
          var categoryName = $(this).text(); 
          // !! be careful here !! send web safe category name, `$(this).text();` or even better a numeric value.
          $.get('runquery.php', {'category': encodeURIComponent(categoryName)}).done(function (data) {
              // on success do something if needed
          });
      })
      </script>
      

      将你的 PHP/SQL 脚本放在 runquery.php 中

      【讨论】:

      • 如果您不在 GET 请求 URL 中 encodeURI categoryName ,它不会总是有效。你还可以做的是:$.get('runquery.php', {'category': categoryName}, function (data) {});
      • 他没有要求我们做他所有的工作。例如,我没有更正他的 sql 查询以防止 sql 注入。 stackoverflow.com/questions/60174/…
      • 确实如此。我是向社区推荐它 :) (无论如何,AJAX 调用对于早期初学者来说有点棘手)
      【解决方案5】:

      你可以用 Ajax 做到这一点 http://www.w3schools.com/jquery/jquery_ajax_get_post.asp

      PHP 脚本在一个单独的文件中,例如:

      首先你的 JavaScript 文件:

      $(document).on('click', '.dropdown-menu li a', function() {
      var categoryName = $(this).html();
        $.post("php-file.php",{cat_Name: categoryName});
      });
      

      那么你的 php-file.php 看起来像:

      <?php
           $categoryname = $_POST['cat_Name'];
           $one = mysqli_query($con, "SELECT id FROM tb_category WHERE category_name = '?' ");
      ?>
      

      如果您想再次使用它们:

      最后添加到您的 PHP 中:

      $return = new array();
      $return[0] = ;//your results in this array
      echo json_encode($return);
      

      那么在你的 JavaScript 中应该是这样的:

      $(document).on('click', '.dropdown-menu li a', function() {
          var categoryName = $(this).html();
            $.post("php-file.php",{cat_Name: categoryName}, function(data){
                sccess_function(data);}, "json");
      });
      

      然后添加一个函数:

      function succsess_function(data){
          //do thing here
      
      }
      

      【讨论】:

        猜你喜欢
        • 2013-08-12
        • 1970-01-01
        • 2017-04-29
        • 2011-04-09
        • 2011-09-27
        相关资源
        最近更新 更多