2015-09-23 43 views
2

我想使用AJAX獲取動態相關選擇列表,但無法獲得第二個列表。這是我的代碼。 gethint.php工作正常。我不知道我在做什麼錯。我gethint.php文件基本動態選擇列表PHP&AJAX jquery

<html> 
    <head> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"</script>  

     <script> 
     $(document).ready(function() 
     { 
      $('#brand').change(function() 
      { 
       var cid=$('#brand').val(); 
       if(cid !=0) 
       { 

       $.ajax({ 
        type:'post', 
        url: 'gethint.php', 
        data: {id:cid}, 
        cache:false, 
        success: function(returndata) 
         { 
          $('#model').html(returndata); 
         } 
        }); 
       } 
      }) 
     }) 
     </script> 
    </head> 
    <body> 
     <header> 
      <h1>Car Comparision </h1> 
     </header> 
     <form method="post" action=""> 
      Brand 1: 
      <select id="brand" class="brand"> 
        <?php 
        include "connect.php"; 
        $query=$con->query("SELECT * FROM car"); 
        while($brand=$query->fetch_assoc()) 
        { 
        $brand_sel='<option value="'.$brand['id'].'"'.">".$brand['brand'].'</option>'."\n"; 
        echo $brand_sel; 
        } 
        ?> 
      </select> 
      Model 1: 
      <select id="model" class="model"> 
      <option value="0">Please select a city</option> 
       <option></option> 
      </select> 
      <input type="submit" value="submit"> 
     </form> 
    </body> 
</html> 

代碼

<?php 
require ("connect.php"); 
$Query='SELECT * FROM model WHERE id='.$_POST['id']; 
$sql=$con->query($Query) or die(mysql_error()); 
//print_r($Query); 
while($row=$sql->fetch_array(MYSQLI_ASSOC)) { 
    ?> 
    <option value="<?php echo $row["id"];?>"><?php echo $row['model_name'];?></option> 
<?php 
} 
?> 
+0

是否識別出任何錯誤?請確認,ajax響應預計? – Sachink

回答

0

請試試這個代碼

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 

    <script> 
    $(document).ready(function() 
    { 
     $('#brand').on('change', function() { 
      var cid=$('#brand').val(); 
      if(cid !=0) 
      { 

      $.ajax({ 
       type:'post', 
       url: 'gethint.php', 
       data: {id:cid}, 
       cache:false, 
       success: function(returndata) 
        { 
         $('#model').html(returndata); 
        } 
       }); 
      } 
     }) 
    }) 
    </script> 
+0

它像一個魅力。謝謝你,但爲什麼我的舊代碼沒有工作。 – Elafanto

0

我會做不同的一條出路:

<?php 
require ("connect.php"); 
$Query='SELECT * FROM model WHERE id='.$_POST['id']; 
$sql=$con->query($Query) or die(mysql_error()); 
//print_r($Query); 

$elements = []; 
while($row=$sql->fetch_array(MYSQLI_ASSOC)) { 
    $item = ["id" => $row['id'], "model_name" => $row['model_name']] 
    array_push($elements , $item) 

} 
echo $elements; 

?> 

我會發送包含的所有項的關聯數組您的選擇。我也將修改你的腳本:

<script> 
    $(document).ready(function() 
    { 
     $('#brand').change(function() 
     { 
      var cid=$('#brand').val(); 
      if(cid !=0) 
      { 

      $.ajax({ 
       type:'post', 
       url: 'gethint.php', 
       data: {id:cid}, 
       cache:false, 
       success: function(returndata) 
        { 
         returndata.each(data,function(){ 
          $('#model').append("<option value="+data.id+">"+data.model_name+"</option>") 
         }) 

        } 
       }); 
      } 
     }) 
    }) 
    </script> 
+0

也試過了,在這裏學習很棒。謝謝你,先生。 – Elafanto

0

我擔心你真的是正確的值傳遞給阿賈克斯。

看到數據呈現的第一select是:

$brand_sel='<option value="'.$brand['id'].'"'.">".$brand['brand'].'</option>'."\n"; 

它應該是這樣的:

$brand_sel='<option value="'.$brand['id'].'">'.$brand['brand'].'</option>\n';

按我上面的評論,請讓我們知道,如果任何錯誤顯示了關於jQuery或PHP。

另外,檢查傳遞數據到ajax的格式是否正確。

+0

感謝您指出這一點。我厭倦了沒有工作的代碼,所以編輯過多導致了所有事情的混亂。 BTW Abhishek的解決方案對我來說工作得很好。 – Elafanto

+0

可能有用http://forums.mozillazine.org/viewtopic.php?f=38&t=2941553 – Sachink