2014-05-18 3 views
0

J'ai deux boîte de sélection et je veux remplir la deuxième boîte de sélection basée sur le changement de la première boîte de sélection. donc mon code pour la première boîte de sélectionproblème dans la gestion de la réponse 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> 

fonction onchange pour ajax appel showCrops fonction() {

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); 
     } 
    }); 

}

code php pour obtenir une réponse

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 la réponse est

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

mais je reçois 'parsererror' sur la page php principale. Quel est le problème dans mon code? J'ai moins de connaissances en javascript alors peut-être besoin de correction pour peupler par la 2ème boîte de sélection.

+1

La réponse du json généré en php est faux, les objets doivent être emballés sous forme de tableau à l'intérieur de supports de boîte et séparées par des virgules: ' [{...}, {...}] '. Aussi, je changerais le Content-Type en 'application/json'. – Imperative

+0

J'ai besoin de solution. je ne comprends pas –

Répondre

0

il suffit de changer le code php, de sorte que la chaîne droite JSON est généré ..

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

echo json_encode($arr); 
+0

merci beaucoup, son fonctionnement @imperative –