2014-03-12 32 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) 

     } 
    }); 
相關問題