更新:通過禁用干擾Ajax成功響應的CodeIgniter Profiler來實現此目的。我認爲它增加了一個div給JSON響應。選擇列表未被填充(jQuery Ajax)
我想用mysql數據庫中的數據填充依賴選擇框。問題在於,依賴選擇框沒有得到填充,儘管爲了響應Ajax請求而以正確的格式獲取數據。
請幫助我,因爲我完全不知道這裏發生了什麼。以下是我的JavaScript代碼。
<script type="text/javascript">
$(document).ready(function(){
$('#country').change(function(){
$("#cities > option").remove();
var form_data = {
country: $('#country').val(),
csrf_token_name: $.cookie("csrf_cookie_name")
};
$.ajax({
type: "POST",
url: "http://localhost/outlets/get_cities",
data: form_data,
dataType : "JSON",
success: function(cities)
{
$.each(cities,function(id,name)
{
var opt = $('<option />');
opt.val(id);
opt.text(name);
$('#cities').append(opt);
});
}
});
});
});
</script>
這裏是HTML。我正在使用Codeigniter。
<form id="form">
<?php $cities['#'] = 'Please Select'; ?>
<label for="country">Country: </label><?php echo form_dropdown('country_id', $countries, '#', 'id="country"'); ?><br />
<label for="city">City: </label><?php echo form_dropdown('city_id', $cities, '#', 'id="cities"'); ?><br />
</form>
這裏是控制器:
function get_cities(){
$country = $this->input->post('country');
$this->load->model('city');
header('Content-Type: application/x-json; charset=utf-8');
echo (json_encode($this->city->get_cities($country)));
}
&型號:
function get_cities($country = NULL){
$this->db->select('id, name');
if($country != NULL){
$this->db->where('countries_id', $country);
}
$query = $this->db->get('cities');
$cities = array();
if($query->result()){
foreach ($query->result() as $city) {
$cities[$city->id] = $city->name;
}
return $cities;
}else{
return FALSE;
}
}
您是如何驗證響應正確的?你的數據是什麼樣的?如果你沒有向我們展示什麼是循環的,不可能告訴你的循環是否正確。 – 2012-06-14 19:57:46
@am不是我:有效的點。我將添加控制器和模型代碼到問題中。 – vikrants
請添加呈現的響應。這種閱讀方式更容易閱讀。您可以將其記錄到控制檯,然後複製/粘貼它。 'console.log(JSON.stringify(cities));' – 2012-06-14 20:03:17