2017-08-25 207 views
2

我試圖根據另一個選擇菜單上選定的值填充選擇菜單。從另一個下拉列表填充下拉列表

到目前爲止,我設法得到了值,我的PHP代碼確實將值作爲JSON返回。但是,我似乎無法弄清楚如何在下一個選擇菜單中顯示數據。

<div class="form-group"> 
    <label for="laptopBrand">Laptop Brand</label> 
    <select class="form-control" id="laptopBrand"> 
     <?php foreach($laptop_brands as $laptop_brand): ?> 
      <option value="<?= $laptop_brand['Lbrand'] ?>"><?= $laptop_brand['Lbrand'] ?></option> 
     <?php endforeach; ?> 
    </select> 
</div> 

<div class="form-group"> 
    <label for="laptopSeries">Laptop Series</label> 
    <select class="form-control" id="laptopSeries"> 
    </select> 
</div> 

JQuery的

$("#laptopBrand").change(function(){ 
    var lbrand = $(this).val(); 
    $.ajax({ 
     type: "POST", 
     data: 'laptopSeries='+lbrand, 
     url: 'includes/fetch.php', 
     dataType: 'json', 
     success: function(json) { 
      var a = JSON.parse(json); 
      alert(a); 
      var $el = $("#laptopSeries"); 
      $el.empty(); // remove old options 
      $el.append($("<option></option>") 
        .attr("value", '').text('Please Select')); 
      $.each(json, function(value, key) { 
       $el.append($("<option></option>") 
         .attr("value", value).text(key)); 
      }); 
     } 
    }); 
}); 

PHP

if($_POST){ 
     $laptopSeries = $_POST['laptopSeries']; 
     try{  
      $stmt = $db_con->prepare("SELECT `Lseries` FROM `laptop` WHERE `Lbrand` = '$laptopSeries'"); 
      $stmt->execute(); 
      $series = $stmt->fetchAll(PDO::FETCH_ASSOC); 

      foreach ($series as $series) { 
       $array = array($series['Lseries'] => $series['Lseries']); 
       echo json_encode($array); 
      } 

     }catch(PDOException $e){ 
      echo $e->getMessage(); 
     } 
    } 
+0

如果你正在使用' - > prepare()'/' - > execute()',那麼你真的應該使用佔位符來防止sql注入https://stackoverflow.com/questions/60174/how-can-i -prevent-sql -injection-in-php – Sean

+0

@Sean謝謝你指出。我知道我應該使用binParam()。但現在,這不是我主要關心的問題,因爲我試圖確定下拉菜單。 – nTuply

+0

這是從哪裏來的? '$ laptop_brands'還是不相關? –

回答

0

這樣輸入,並確保你的服務器代碼回報,你要填寫鍵和值是什麼。

$.each(a,function(key, value) // a or jsondata 

{

$select.append('<option value=' + key + '>' + value + '</option>'); 

});

+0

這似乎與我所做的相似。這並沒有多大幫助 – nTuply