繁体   English   中英

如何将javascript值传递给php?

[英]How can I pass a javascript value to php?

我想向我的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,并在ajax查询中使用data标签发送信息。

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

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

$data = $_POST["action"];
<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

您应该使用ajax从单击的div中获取属性,并将其发送到php页面,在该页面中您将收到“ javascript变量”,并通过$ _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   
     ");

除非您进行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>

您可以使用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

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM