「ダイナミックコンボボックス」でajaxを動作させるのに問題があります。最初にここにコードがあります:ビュー:
<?php echo form_open('control_form/add_all'); ?>
<label for="make">State<span class="red">*</span></label>
<select id="make" name="make" >
<option value=""></option>
<?php
foreach($makeOptions->result() as $make){
echo '<option value="' . $make->make_id . '">' . $make->make . '</option>';
}
?>
</select>
<label for="model">City<span class="red">*</span></label>
<!--this will be filled based on the tree selection above-->
<select id="model" name="model">
<option value=""></option>
</select>
<label for="f_membername">Member Name<span class="red">*</span></label>
<!--<input type="text" name="f_membername"/>-->
<?php echo form_close(); ?>
ビューコントローラー:
function dropDown(){
if ($this->ion_auth->requireAdmin())
$data = array('title' => 'DropDown', 'main_content' => 'admin/dropDown');
$data['makeOptions'] = $this->vehicle_model->getMake(Null, Null);
$data['modelOptions'] = $this->vehicle_model->getModel(Null, Null, NULL, Null);
$this->load->view('admin/includes/template', $data);
}
Ajaxコントローラー:
function get_model($make){
header('Content-Type: application/x-json; charset=utf-8');
echo(json_encode($this->vehicle_model->getModelByMake ($make)));
}
Jquery:
$('#model').hide();
$('#make').change(function(){
var make_id = $('#make').val();
if (make_id != ""){
var post_url = "http://pulsedrivers.com/admin/get_model/" + make_id;
$.ajax({
type: "POST",
url: post_url,
success: function(models) //we're calling the response json array 'cities'
{
$('#model').empty();
$('#model').show();
$.each(models,function(model_id,model)
{
var opt = $('<option />'); // here we're creating a new select option for each group
opt.val(model_id);
opt.text(model);
$('#model').append(opt);
});
} //end success
}); //end AJAX
} else {
$('#model').empty();
$('#model').hide();
}//end if
}); //end change
モデル(get_modelコントローラーで使用):
function getModelByMake ($make, $tree = null){
$this->db->select('model_id, model, make_id');
if($tree != NULL){
$this->db->where('make_id', $make);
}
$this->db->where('make_id', $make);
$query = $this->db->get('model');
$models = array();
if($query->result()){
foreach ($query->result() as $model) {
$models[$model->model_id] = $model->model;
}
return $models;
} else {
return FALSE;
}
}
ビューには2つのドロップダウンが含まれ、1つはメーカーを表示し、もう1つは対応するモデルを表示します。メーカーを選択した後、モデルが表示されません。Firebugは、プロセス中にエラーを表示しません。
すでにチェックされていること:jqueryが機能し、スクリプトが読み込まれます。
コントローラget_modelsは、この1:Corvette、2:Camaroのような配列を返すため、これも正しく機能しているようです。
どんな助けでもありがたいです、ありがとう!