我想填充从另一个下拉列表中的值,所以这里是我的ajax代码。AJAX不显示结果
$(document).ready(function() {
$('#category').change(function() {
var category = $('#category :selected').val(); // <-- change this line
console.log(category);
$.ajax({
type: "POST",
url: "<?php echo base_url('Ajax_test_controller/populateSubcategory'); ?>",
data: category,
dataType: 'json',
success: function(data) {
console.log(data);
$(data).each(function(){
$("#subcategory").append($('<option>', {
value: this.id,
text: this.subcategory,
}));
})
},
error: function(errorw) {
alert("hi");
}
});
});
});
这是我的控制器
public function populateSubcategory(){
$category_id = $this->input->post('category');
$data = $this->ajax_test_model->getSubCategory($category_id);
echo json_encode($data);
}
这是我的模型
function getSubCategory($category_id){
$this->db->select('id, subcategory');
$this->db->from('subcategory');
$this->db->where('category_id', $category_id);
$this->db->order_by("subcategory", "asc");
$query = $this->db->get();
return $query->result();
}
这是我的看法
<div>
<div class="form-group">
<label class="control-label">Category : </label>
<select name="category" id="category">
<option value="0">Select Category</option>
<?php
if(is_array($category) || is_object($category)){
foreach($category as $category_row){
echo '<option value="'. $category_row->id .'">'. $category_row->category .'</option>';
}
}
?>
</select>
<label class="control-label">Subcategory : </label>
<select name="subcategory" id="subcategory">
</select>
</div>
</div>
我不知道是否有错误在我的语法上,但每当我尝试将我的模型更改为
function getSubCategory($category_id){
$cat = 1;
$this->db->select('id, subcategory');
$this->db->from('subcategory');
$this->db->where('category_id', $cat);
$this->db->order_by("subcategory", "asc");
$query = $this->db->get();
return $query->result();
}
我得到了我想用这个模型得到的结果。但这只是为了检查我是否从我的查询中获得任何内容。
我的猜测是category_id没有传递给我的模型。但是,当我检查category_id的值,它等于1.
而我没有看到任何问题。感谢有关如何解决此问题的输入。谢谢。
哇感谢。这解决了我的问题。然而,我编辑了你的代码,因为它没有回显我想要的值,如果我把dataType:'json'放在注释中,它会导致错误。 –
酷,无论如何,做Ajax请求总是检查浏览器检查器中的网络选项卡。在那里你可以检查请求(参数,数据等)和响应。 – adarshdec23