我知道在本网站的许多其他案例中已经提出过这个问题。但是,我仍然没有正确的答案来解决我的问题。
我想为我的组合框和textarea制作ajax函数。因此,当我在组合框中选择一个选项时,textarea中的文本将根据组合框的选定值而改变。
更新:我的textarea代码
这是我的组合代码和textare代码:
<select class="form-control" name="option_template" id="template" onchange="get_template(this.value);">
<option value="" selected="" disabled=""> -- Pilih Template --</option>
<?php foreach ($template as $template){
?>
<option value="<?php echo $template['id'];?>"><?php echo $template['nama'];?></option>
<?php }
?>
</select>
<div class="col-md-8 col-sm-8 col-xs-12">
<textarea id="template-content"></textarea>
</div>
这是我的javascript函数和ajax
<script type="text/javascript">
// alert("hai");
function get_template(id){
alert(id);
$.ajax({
method:"POST",
url:'<?php echo base_url();?>broadcast/ajax_template',
data:{option:id},
succes:function(msg){
alert(msg);
$('#template-content').val(msg);
}
});
}
</script>
和最后一个,这是我从ajax检索帖子的php函数
public function ajax_template(){
$id=$this->input->post('option');
$q=$this->M_template->get_template($id)->row_array();
echo "Test output".$q['content'];
}
当我运行上面的代码时,javascript get_template()函数语法中的 alert(id); 正在运行,所以每次选择时我都会得到选项值选项。但问题是我无法从ajax的帖子中获取输出数据。有人可以帮我这个吗?我知道这可能是一个基本的知识,但我花了几个小时来解决这个问题,谢谢你:)
答案 0 :(得分:0)
这很奇怪,我不知道为什么我以前的代码不起作用。但我发现了一种新的方法,通过使用 change()函数来选择语法并使用get方法而不是post。
这是我的javascript和ajax函数
$("#template").change(function() {
var e = document.getElementById("template");
var id = e.options[e.selectedIndex].value;
$.ajax({
url: '<?php echo base_url();?>Broadcast/ajax_template?option='+id,
success: function(msg){
$('#template-content').val(msg);
}});
});
我删除了select语法的 onchange 属性 并更改php函数以获取从发布到获取
的ID$id=$this->input->get('option');
答案 1 :(得分:0)
更改ajax_template()方法
您将从M_template获得响应作为数组。你不能像那样回应数组。 使用echo json_encode($ arrayname)。在你的情况下echo json_encode($ q ['content']);
并确保在ajax中提到dataType:'json'
答案 2 :(得分:-1)
你可以打电话给你的功能
public function ajax_template(){
$id = $this->input->post('option');
$q=$this->M_template->get_template($id)->row_array();
echo "Test output".$q['content'];
exit;
}
不使用ajax并检查它是否会显示任何内容。请在$id
变量上传递静态值。