Ajax onchange组合框无法正常工作

时间:2017-01-07 07:19:48

标签: javascript ajax codeigniter

我知道在本网站的许多其他案例中已经提出过这个问题。但是,我仍然没有正确的答案来解决我的问题。

我想为我的组合框和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的帖子中获取输出数据。有人可以帮我这个吗?我知道这可能是一个基本的知识,但我花了几个小时来解决这个问题,谢谢你:)

3 个答案:

答案 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变量上传递静态值。