2015-03-19 630 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> 
      <?}?>