ajax没有从mysql数据库返回值

时间:2016-02-15 14:27:35

标签: php jquery mysql ajax

我希望能够使用.post方法将变量发送到php文件,在那里我可以使用mysql查询从数据库中检索数据。到目前为止,我可以使用ajax发送有关变量的信息,但无法使用ajax从php脚本中检索输出。我对ajax非常不成熟,因此通过错误学习...感谢您查看我的查询。

如何在index.php

的div标签内显示php输出

test.php

   <?php require('../config/connection.php'); ?>
        <?php
        $value = $_POST['value'];
        $query = mysqli_query($dbc, "SELECT DISTINCT class,product FROM prdct_categories WHERE class = '$value'");
        while($list = mysqli_fetch_assoc($query)){
        $prdct = $list['product'];
        echo $prdct;    
        }
   ?>

ajax代码(index.php)

    <div class="col-md-2" >

         <?php

        $test  = $_GET['product'];
        $q = "SELECT * FROM prdct_categories WHERE product = '$test' ";
        $r = mysqli_query($dbc, $q);
        $path_info = get_path();
        $test1 = $path_info['call_parts'][1];

       While($list = mysqli_fetch_assoc($r)) {?>
      <li class="nav" <?php if($test1==$list['slugs']){echo'id="actives"';} ?>>

<a href="<?php echo $test;?>/<?php echo $list['slugs'];?> ">

<?php echo $list['subgroup']."(".$list['contains'].")".'<br/>';?></a></li>

                 <?php }?>   
                 </div>

                <div class="col-md-4" id="testing">

                </div>

                <script>
                    $(document).ready(function(){

                        $(".nav").click(function(){

                        $.post("test.php", {value:$(this).text()}, function(data) {$("#testing").text(data)} );

                        event.preventDefault();
                        });
                    });
                </script>

3 个答案:

答案 0 :(得分:1)

请改用此代码。您必须阻止在.nav元素中单击的链接的默认操作:

    $(".nav > a").click(function(e){ // see change here
            e.preventDefault();   // added here e must match var e above.
            $.post("test.php", {value:$(this).text()}, function(data) {$("#testing").text(data)} );
    });

您的.nav脚本应为:

<li class="nav<?php if($pageid==$nav['product']){echo ' active';}?>"> 
....

您当前的脚本不会使用class="nav"创建任何元素,因此,选择器.nav不会返回任何内容。 您当前的脚本还会创建多个具有相同ID的元素id="nav",这会使您的HTML无效.. 进行上述更改

答案 1 :(得分:0)

从ajax返回数据的表单。

<?php require('../config/connection.php'); 
      header('Content-Type: application/json');

        $value = $_POST['value'];
        $prdct = array();
        $query = mysqli_query($dbc, "SELECT DISTINCT product FROM prdct_categories WHERE class LIKE '{$value}'");
        while($list = mysqli_fetch_assoc($query)){
        $prdct[] = $list['product'];
        }
        $return = json_encode($prdct);
        echo $return;
        die;
   ?>

在javascript中替换:

$.post("test.php", {value:$(this).text()}, function(data) {$("#testing").text(data)} );

$.post("test.php", {value:$(this).text()}, function(data){
    for(var k in data) {
    $("#testing").append(data[k]+"<br />");
    }
});

答案 2 :(得分:0)

使用$("#testing").html(data);代替$("#testing").text(data);

<script>
    $(document).ready(function(){
        $(".nav").click(function(){
              $.post("test.php", {value:$(this).text()}, function(data) {
                        $("#testing").html(data);
                    });
              event.preventDefault();
        });
    });
</script>