2014-03-12 21 views
0

我在这里有一个关于ajax的问题​​。其实我是使用Ajax的初学者,这就是为什么我无法弄清楚我的问题。我有一个有4个选择框的表单。初始或主选择框是国家选择器。其次是州的下一个是城市,最后是巴朗盖。我的目标就是这样。用户选择他的国家后,第二个状态选择框会根据用户国家自动更改。选择状态后,它也会自动改变城市,最后是城市。它就像一个动态地址字段。我正在使用codeigniter。这就是我所做的。这是获取状态的过程。如何使用Ajax过程显示来自控制器/模型的数据?

在我的PHP的形式我有这样的:

<tr> 
    <td><label style="font-weight: normal">State/Province:&nbsp;</label></td> 
    <td > 
     <select class="form-control" name="c_state" id="c_state"> 
      <option value="">--Select State--<option> 
     </select> 
    </td> 
</tr> 
<tr> 
    <td><label style="font-weight: normal">Country:&nbsp;</label></td> 
    <td > 
     <select class="form-control" name="c_country" id="c_country"> 
      <option value="">--Select Country--</option> 
      <?php 
       foreach($countries as $country){ 
        if($country['country'] == 'Philippines'){ 
         echo "<option value='".$country['code']."'selected='selected'>".$country['country']."</option>"; 
        }else{ 
         echo "<option value='".$country['code']."'>".$country['country']."</option>"; 
        } 
       } 
      ?> 
     </select> 
    </td> 
</tr> 

.... 

$("#c_country").on('change',function(){ 

    var c_country = $("#c_country").val(); 
    var var_country_selection = '<?php echo site_url("alliance_controller/get_provinces/'+c_country+'"); ?>'; 

    console.log(c_country); 

    $.ajax({ 
     type: 'POST', 
     url: var_country_selection, 
     data: { id: $(this).val() }, 
     dataType: 'json', 
     success: function(d){ 
      alert(d['c_country']); 
     } 
    }); 

}); 

在我的控制器我有这样的:

public function get_provinces($id){ 
    $country = $this->alliance_model->hhj_provinces($id); 
    echo json_decode($country); 
} 

在我的模型我有这样的:

public function hhj_provinces($id) { 
    $query = "SELECT * FROM ref_region_province WHERE country_code = '".$id."'"; 
    $result = $this->db->query($query); 
    echo json_encode($result->result_array()); 
} 

的输出jquery中alert的成功是'undefined'。而且我还使用Chrome中的开发者工具,并且在网络选项卡中查看了它,它显示了我的ajax代码的URL。但在我的预览中,我有这样的事情。

[] 
No Properties 

这就是所有人。我只想获得所选国家的状态。

+0

你检查如果查询返回任何结果? – anurupr

+0

不,它不显示任何东西。 – Jerielle

+0

所以如果查询没有返回任何结果,你会得到'[]'作为你的输出。 – anurupr

回答

0

必须在控制器返回一个JSON对象,这样

public function get_provinces(){ 

$id = $this->input->post('id'); 
$country = $this->alliance_model->hhj_provinces($id); 
$this->output->set_content_type('application/json'); 
$this->output->set_output(json_encode($country)); 

}

然后在视图

$.ajax({ 
     type: 'POST', 
     url: var_country_selection, 
     data: { id: $(this).val() }, 
     dataType: 'json', 
     success: function(data){ 
      $.each(data, function (key, value) { 
        console.log(value.field) 

     } 
    }); 
相关问题