【发布时间】:2019-06-30 01:22:45
【问题描述】:
我试图在 codeigniter 中使用 ajax 创建一个可靠的下拉列表。我使用了一个代码..但它不起作用..这些值没有附加到下拉列表中。将数据从数据库检索到第一个下拉列表工作正常。第一个下拉列表工作正常......但我想使用 ajax 根据类别制作可靠的下拉列表子类别
控制器::
public function pdview()
{
$this->load->helper('url');
$this->load->helper('form');
$this->load->model('AjaxpModel');
$data['cnames'] = $this->AjaxpModel->getcat();
$this->load->view('pd',$data);
}
public function getsubcaty()
{
$postData = $this->input->post();
$this->load->model('AjaxpModel');
$data = $this->AjaxpModel->getsubcategory($postData);
echo json_encode($data);
}
查看::
Category Name : <select name="category" id="category">
<option value="">Select</option>
<?php
foreach($cnames as $catn){
echo "<option value='".$catn['catname']."'>".$catn['catname']."</option>";
}
?>
</select><br><br>
Subategory Name :
<select name="subcategory" id="subcategory">
<option value="">Select</option>
</select><br><br>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type='text/javascript'>
var baseURL= "<?php echo base_url();?>";
$(document).ready(function(){
// Category Change
$('#category').change(function(){
var cat = $(this).val();
// AJAX request
$.ajax({
url:'<?=base_url()?>index.php/Ajaxuser/getsubcaty',
method: 'post',
data: {cat:cat},
dataType: 'json',
success: function(response){
$('#subcategory').find('option').not(':first').remove();
// Add options
$.each(response,function(index,data){
$('#subcategory').append('<option value="'+data['subcatname']+'">'+data['subcatname']+'</option>');
});
}
});
});
});
型号:::
public function getcat()
{
$this->load->database();
$result=$this->db->select('cid,catname')->from('catc')->get()->result_array();
$cname=array();
foreach($result as $r)
{
$catname[$r['catname']] = $r['catname'];
}
$catname[''] = 'Select ';
return $catname;
}
function getsubcategory($postData){
$response = array();
// Select record
$this->db->select('scid,subcatname');
$this->db->from('scatc');
$this->db->where('catname', $postData['cat']);
$q = $this->db->get();
$response = $q->result_array();
return $response;
}
【问题讨论】:
-
嘿,在
getsubcaty方法下检查你的Controller,将$postData = $this->input->post();更改为$postData = $this->input->post('cat');以及你的模型getsubcategory函数,不要将返回的数据存储到数组中,只需使用return $q->result()以便它是 Object 形式 可以被正式编码的数据。 -
只需从服务器端回显所有选项,在前端显示 .html() 很简单。
-
@Roshan 我按照你说的改变了..但是......该值仍然没有检索到下拉列表中:(
-
@DevsiOdedra 我也试过了
-
所以你是否从服务器获得结果?
标签: php ajax codeigniter mysqli