2014-12-02 160 views
0

我想为我的php查询添加一个javascript值。该代码是这样如何将javascript值传递给php?

<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> 

我想类别名称的值放到我在PHP中进行的查询。我将如何做到这一点。

+0

你可以做一个AJAX调用和数据发送到你的数据库查询涉及一个单独的PHP文件。 – aphextwix 2014-12-02 08:39:52

回答

0

只是花了几个小时试图自己今天解决这个问题。您可以使用ajax,并使用ajax查询中的数据标记发送信息。

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

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

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

+1

如果您在GET请求URL中没有'encodeURI''categoryName',它并不总是有效。你也可以做的是:'.get('runquery。php',{'category':categoryName},function(data){});' – 2014-12-02 08:55:09

+0

他并没有要求我们做所有的工作。例如我没有纠正他的SQL查询,以防止SQL注入。 http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – Gustonez 2014-12-02 08:58:39

+0

确实。我建议它为社区:)(AJAX调用对于初学者来说有点棘手) – 2014-12-02 09:01:51

0

你应该使用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 
    "); 
+0

但我怎样才能从查询中获取数据?我想要它,因为我想用它来处理这些代码 echo“$('#region')。val('”。$ rowOne ['category_name']。“');”; – jim 2014-12-02 08:54:00

+0

你可以返回一个div中查询得到的数据,你可以在成功函数$(“。result”)。html(html)中选择div。创建一个空的div并给它一个类名“result”,现在查询的结果将被加载到类“result”的div中, – Katyoshah 2014-12-02 09:34:39

0

它不走这条路,除非你AJAX调用(见http://api.jquery.com/jquery.get/等答案)。

简单的解决方案(如果你没有太多的类别,比如几百TOPS)是缓存的类别客户端的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> 
0

你可以像一个独立的文件使用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 

}