2014-05-18 161 views
0

我有兩個選擇框,並希望基於第一個選擇框的onchange填充第二個選擇框。所以我的第一個選擇框代碼麻煩在處理JSON響應

 <select id="category-box" name="category" onchange="showCrops()" > 
      <option value ="0">Select category</option> 
      <?php 
       $query = $con->query("Select*from categories"); 
       while($row = $query->fetch_object()) 
       { 
        echo "<option value = '".$row->category_id."'>".$row->category."</option>"; 
       } 
      ?> 
     </select> 

平變化功能Ajax調用 功能showCrops(){

var name = $('#category-box').val(); 

    $.ajax({ 
     type: "POST", 
     url: "getCropName.php", 
     data: {category:name}, 
     dataType: 'json', 
     success: function(data, textStatus, jqXHR) 
     { 
      var opts = $.parseJSON(data); 
      $.each(opts, function(i,d) { 
       $('#crop-box').append('<option value="' + d.crop_id + '">' + d.crop_name + '</option>'); 
      }); 

     }, 
     error: function (jqXHR, textStatus, errorThrown) 
     { 
      console.log(textStatus); 
     } 
    }); 

}

PHP代碼得到響應

header('Content-type: text/html; charset=utf-8'); 
include("connect.php"); 

$category = $_POST['category']; 

$sql1 = $con->query("SELECT category_id from categories where category ='".$category."' "); 
$row1= $sql1->fetch_array(); 

$sql2 = $con->query("SELECT * from crop_category where category_id ='".$row1['category_id']."' "); 


while($row2 = $sql2->fetch_assoc()){ 
      echo json_encode($row2); 
      } 

JSON迴應是

  {"crop_id":"1","category_id":"1","crop_name":"rice"} {"crop_id":"2","category_id":"1","crop_name":"wheat"} 

但我在主php頁面上得到'parsererror'。我的代碼有什麼問題?我在JavaScript中的知識較少,因此可能需要更正才能通過第二個選擇框進行填充。

+1

在PHP產生JSON響應是錯誤的,則這些對象必須包裝成盒支架和逗號內的陣列分隔:' [{...},{...}]'。另外我會改變內容類型爲'application/json'。 – Imperative

+0

我需要解決方案。我沒有得到它 –

回答

0

只要改變PHP代碼,從而產生合適的JSON字符串..

$arr = array(); 
while($row2 = $sql2->fetch_assoc()){ 
    $arr[] = $row2; 
} 

echo json_encode($arr); 
+0

非常感謝你,它的工作@imperative –