2015-03-19 72 views
4

我正在显示2个下拉列表。 HTML页面的代码是fetchsubcat.php页下拉列表不显示数据

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

代码

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

我想当我选择类别第二个下拉列表应该只显示所选类别下的子类别,但问题是在选择类别的子类别下不会显示任何内容。任何人都可以请帮我

+0

在浏览器控制台任何错误..? – Sarath 2015-03-19 11:50:44

+0

请检查你是否得到类别数组,然后是你的子类别数组?可能是问题出在你的子类别数组中。它可能是空的,或者您的ajax请求没有正确处理。 – 2015-03-19 11:51:13

+0

@Sarath在控制台没有错误 – kavi 2015-03-19 11:52:36

回答

0

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

此外,使用已知的类别ID(例如)测试查询,用您知道数据库中存在的数字替换_POST['id'],该数字中包含子类别关联的数字。随着这一点,该应用程序按预期行事吗?

+0

我没有得到任何错误,但数据也没有显示 – kavi 2015-03-19 11:52:01

+0

你可以在这里显示你的子类别数组? – 2015-03-19 11:52:41

+0

我会试试这个。在页面fetchsubcat.php上做一个字符串的简单回声。 AJAX的成功回调应该把它解释为你的“回归数据” - 你会看到什么吗?您的AJAX调用也不会为返回的信息指定dataType。可以帮助。 – 2015-03-19 12:15:13

0

试试这个..

<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); 
?> 
+0

我收到了脚本部分的语法错误 – kavi 2015-03-19 12:47:02

+0

你能分享从php返回的数组.. – Sarath 2015-03-19 13:31:13

0

更改您的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> 
      <?}?>