Javascript 使用下拉列表从数据库获取数据
在这里,我使用CODEIGNITER中的jquery ajax编写了一个功能的代码,我需要使用“ajax post方法”将下拉列表的值传递到数据库,执行查询,并使用onChange在同一视图页面中获取和显示结果/数据,但问题是onChange没有可见的更改。 请帮我解决这个问题 view.phpJavascript 使用下拉列表从数据库获取数据,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,在这里,我使用CODEIGNITER中的jquery ajax编写了一个功能的代码,我需要使用“ajax post方法”将下拉列表的值传递到数据库,执行查询,并使用onChange在同一视图页面中获取和显示结果/数据,但问题是onChange没有可见的更改。 请帮我解决这个问题 view.php <div class="col-sm-6 form-group"> <select class="chosen-select form-cont
<div class="col-sm-6 form-group">
<select class="chosen-select form-control" name="ProductCategoryID" id="item_code" value="<?php echo set_value('ProductCategoryID'); ?>" required>
<option>Select Item code</option>
<?php
foreach($itemlist as $row)
{
echo '<option value="'.$row->ItemCode.'">'.$row->ItemCode.'</option>';
}
?>
</select>
</div>
<div class="col-sm-12 form-group" id="description">
</div>
<script src="<?php echo base_url("assets/js/jquery-1.10.2.js"); ?>" type="text/javascript"></script>
<script type="text/javascript">
$('#item_code').change(function(){
var item_code = $(this).val();
$("#description > option").remove();
$.ajax({
type: "POST",
url: "<?php echo site_url('Ajax/get_description'); ?>",
data: {id: item_code},
dataType: 'json',
success:function(data){
$.each(data,function(k, v){
var t_area = $('<textarea />');
t_area.val(k);
t_area.text(v);
$('#description').append(t_area);
});
$('#item_code').append('<textarea value="' + id + '">' + name + '</textarea>');
}
});
$('#item_code').trigger('chosen:updated');
});
</script>
<?php
class Ajax extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
$this->load->library(array('session', 'form_validation'));
$this->load->database();
$this->load->model('Gst_model');
$this->load->model('User_model');
$this->load->model('Report_model');
$this->load->helper('url');
}
function get_description()
{
$id = $this->input->post('id');
echo(json_encode($this->Report_model->get_description($id)));
}
}
function get_description($item_code)
{
$result = $this->db->where('ItemCode', $item_code)->get('gst_itemmaster')->result();
$id = array('0');
$name = array('0');
for ($i=0; $i<count($result); $i++)
{
array_push($id, $result[$i]->ItemDescription);
array_push($name, $result[$i]->ItemDescription);
}
return array_combine($id, $name);
}
您的问题是更新选定的下拉列表有点棘手。更新选项列表后,您必须调用类似于$('.my_select_box').trigger('selected:updated')代码>查看所选的选择文档
只需在change()函数末尾的ajax调用之后添加以下内容:
$('#item_code').change(function(){
var item_code = $(this).val();
$("#description > option").remove();
$.ajax({
type: "POST",
url: "<?php echo site_url('Ajax/get_description'); ?>",
data: {id: item_code},
dataType: 'json',
success:function(data){
$.each(data,function(k, v){
var t_area = $('<textarea />');
t_area.val(k);
t_area.text(v);
$('#description').append(t_area);
});
$('#state').append('<textarea value="' + id + '">' + name + '</option>');
}
});
$('#item_code').trigger('chosen:updated');
});
$('#项_代码')。更改(函数(){
var item_code=$(this.val();
$(“#说明>选项”).remove();
$.ajax({
类型:“POST”,
url:“”,
数据:{id:item_code},
数据类型:“json”,
成功:功能(数据){
$。每个(数据、函数(k、v){
var t_面积=$('');
t_面积val(k);
t_面积。文本(v);
$('#description')。追加(t#u区域);
});
$('#state')。追加(''+name+'');
}
});
$(“#项_代码”).trigger('selected:updated');
});
是否在每次更改选择框时发送请求?检查控制台中是否有错误。如果未发送请求。使用此方法$('select')。在('change',function(){alert(this.value);})上签入项目代码script@ShahidRafiq先生,当我使用您提供的方法时,id正在通过。。!!对不起,我有点懒,应该为你发布整个函数。您在change()函数的外部插入了我建议的行,但它必须在内部,但就在最后。我已经编辑了我的答案,以显示整个change()函数。谢谢您的帖子,先生..但一旦更改,文本区域就没有附加div标记..!!:-(没有注意到$('#state').append(''+name+'')
行,但老实说,它看起来有点乱。您关闭了选项标签,但从未打开它。您想在下拉列表中放置一个文本区域吗?听起来不对。哦,我看不到任何状态元素AAA的迹象。非常感谢,先生,如果没有问题,我可以再问您一个问题吗?当然,请继续。