【问题标题】:Dropdown list not displaying data下拉列表不显示数据
【发布时间】:2015-05-22 12:21:48
【问题描述】:

我正在显示 2 个下拉列表。 html页面上的代码是

<head>
<script>
$(document).ready(function(){
    $('#cat').change(function(){
        var catid = $('#cat').val();
        if(catid != 0)
        {
            $.ajax({
                type:'post',
                url:'fetchsubcat.php',
                data:{id:catid},
                cache:false,
                success: function(returndata){
                    $('#subcat').html(returndata);
                }
            });
        }
    })
})
</script>
</head>
<body>
<fieldset>
    <label>Category</label>
    <select name="catname" id="cat">
        <option value="0">Please Select a category</option>
        <?php
            require 'connection.php';
                $sql = "SELECT * FROM category";
                $result = mysqli_query($con, $sql);

                if (mysqli_num_rows($result) > 0) {
                    while($row = mysqli_fetch_assoc($result)) 
                        {
                            $catname=$row["catname"];
                            $catid=$row["id"];
        ?>
        <option value="<? echo $catname.'-'.$catid;?>"><? echo $catname;?></option>
                        <?}
                }?>
    </select>
</fieldset> 

<fieldset>
    <label>Subcategory</label>
    <select name="subcatname" id="subcat">
        <option></option>
    </select>
</fieldset>
</body>

fetchsubcat.php 页面上的代码是

<?php
    require 'connection.php';
        $sql = "SELECT * FROM subcategory where catid='".$_POST['id']."'";
        $result = mysqli_query($con, $sql);

        if (mysqli_num_rows($result) > 0) {
            while($row = mysqli_fetch_assoc($result)) 
                {
                    $subcatname=$row["subcatname"];
                    $subcatid=$row["id"];

?>

<option value="<? echo $subcatname.'-'.$subcatid;?>"><? echo $subcatname;?></option>

类别表视图

id catname

子类别表视图

id  catname  catid  subcatname

我希望当我选择类别时,第二个下拉列表应仅显示所选类别下的那些子类别,但问题是在选择类别时在子类别下没有显示任何内容。谁能帮帮我

【问题讨论】:

  • 浏览器控制台中的任何错误..?
  • 请检查您是否获得了类别数组,然后是您的子类别数组?可能问题出在您的子类别数组中。要么是空的,要么你的 ajax 请求没有正确处理。
  • @Sarath 控制台没有错误
  • @anant kumar singh 你能告诉我如何检查数组
  • 当您将 ajax 请求发送到函数并返回一个数组时,放入 die();在那里并检查萤火虫控制台响应。如果来了,你得到了你的数组。

标签: php jquery mysql sql mysqli


【解决方案1】:

将您的 fetchsubcat.php 代码更改为

<?php
    require 'connection.php';
    $catid =  $_REQUEST['id']; 

        $sql = "SELECT * FROM subcategory where catid='".$catid."'";
        $result = mysqli_query($con, $sql);

        if (mysqli_num_rows($result) > 0) 
            {
                while($row = mysqli_fetch_assoc($result)) 
                    {
                        $subcatname=$row["subcatname"];
                        $subcatid=$row["id"];
?>
<option value="<? echo $subcatname.'-'.$subcatid;?>"><? echo $subcatname;?></option>
                  <?}
            }
        else
            {?>
                <option value="">No sub category </option>
            <?}?>

【讨论】:

    【解决方案2】:

    试试这个..

    <script>
    $(document).ready(function(){
        $('#cat').change(function(){
            var catid = $('#cat').val();
            if(catid != 0)
            {
                $.ajax({
                    type:'post',
                    url:'fetchsubcat.php',
                    data:{id:catid},
                    cache:false,
                    dataType: "json",
                    success: function(returndata){
                      $.each(returndata, function(i, item) {
                      $('#subcat').append('<option value="'+returndata[i].subcatname+'-'+returndata[i].subcatid+'">'+returndata[i].subcatname+'</option>');
                       });​
                    }
                });
            }
        })
    })
    </script>
    

    在 fetchsubcat.php 中

    <?php
        require 'connection.php';
            $sql = "SELECT * FROM subcategory where catid='".$_POST['id']."'";
            $result = mysqli_query($con, $sql);
            $rows = Array();
            while($row = mysqli_fetch_assoc($result)) {
                     $rows[] = $row;
             }
            print json_encode($rows);
     ?>
    

    【讨论】:

      【解决方案3】:

      您是否从 AJAX 结果中得到任何错误?我做过类似的事情,当我没有得到预期的结果时,结果证明我需要向 AJAX 发送同步请求并强制浏览器等待返回的数据。

      此外,使用已知的类别 ID,(例如)测试查询,将 _POST['id'] 替换为您知道数据库中存在的与子类别相关联的数字。有了这些,应用程序是否按预期运行?

      【讨论】:

      • 我没有收到任何错误,但数据也没有显示出来
      • 我会试试这个。在页面 fetchsubcat.php 上做一个简单的字符串回显。然后,AJAX 成功回调应将其解释为您的“返回数据”——您看到什么了吗?此外,您的 AJAX 调用没有为返回的信息指定数据类型。可能会有所帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      • 2021-08-21
      相关资源
      最近更新 更多