2015-12-22 90 views
2

我放弃了这段代码来检查机制是否有效。实际上,我需要实现的是根据“状态”下拉列表中的选择填充“城市下拉列表”。 HTML代码如下。根据Jquery Ajax返回的值填充第二个下拉列表

 <select id="id"></select> 
    <select id="state"></select> 
    <select id="city"></select> 

Ajax调用如下。

$(document).on("change", '#state', function(e) { 
      var state = $(this).val(); 


     $.ajax({ 
      type: "POST", 
      data: {state: state}, 
      url: 'get_name_list.php', 
      dataType: 'json', 
      success: function(json) { 

       var $el = $("#city"); 
       $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代码使用以下结构将值列表编码为JSON。

作为一项测试,我将JSON插入到数据库表中,并且它一直工作到这一点。所以这不是一个理论过程。它一直工作到代码中的这一点。

JSON结构如下。

[{"name":"Alappuzha"},{"name":"Ernakulam"},{"name":"Idukki"},{"name":"Kannur"},{"name":"Kasaragod"},{"name":"Kollam"},{"name":"Kottayam"},{"name":"Kozhikode"},{"name":"Malappuram"},{"name":"Palakkad"},{"name":"Pathanamthitta"},{"name":"Thiruvananthapuram"},{"name":"Thrissur"},{"name":"Wayanad"}] 

然后我回应JSON。

但是回到第一页的下拉菜单没有被填充。 PHP文件如下。

$json= array(); 
$id=$_POST["id"]; 
//echo $sample; 

//mysqli_query($mysqli,"INSERT into test_tablr values('','$id')") or die(mysqli_error($mysqli)); 


if ($result = $mysqli->query("SELECT name FROM geo_locations WHERE parent_id =$id ")) { 

    while ($row = mysqli_fetch_assoc($result)) { 
      $json1[] = $row; 
    } 
    $json=json_encode($json1); 
} 


mysqli_query($mysqli,"INSERT into test_tablr values('','$json')") or die(mysqli_error($mysqli)); 
echo $json; 

但不幸的是,下拉列表没有被填充。任何灯光?

+0

你发现了有用吗? –

+0

问题是行 成功的变量json:function(json)应该保存从PHp返回的json数据的权利?但简单的console.log(json)似乎无法打印出来。这意味着,数据不会从PHP或其他任何地方发回。 –

回答

3

试试这个jQuery中:

var $el = $("#city"); 
    $el.empty(); // remove old options 
    $el.append($("<option value=''>Please Select</option>"); 
    $.each(json, function(value, key) { 
     $el.append($("<option value='"+ value +"'>"+key+"</option>"); 
    });   
相关问题