【问题标题】:Ajax onchange combobox not workingAjax onchange 组合框不起作用
【发布时间】:2017-05-21 23:56:52
【问题描述】:

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

我想为我的组合框和文本区域创建 ajax 函数。因此,当我在组合框中选择一个选项时,textarea 中的文本将根据组合框的选定值而变化。


更新:我的文本区域代码

这是我的组合框和文本代码:

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

【问题讨论】:

  • 你的意思是ajax在调用php函数但没有返回值,对吧?
  • 你能告诉我你发生的错误吗?
  • @DeepakDholiyan 是的,它没有返回任何值
  • @Kamlesh 没有错误,即使我的控制台也很清晰。
  • 只需使用 print_r($q);并检查输出是什么

标签: javascript ajax codeigniter


【解决方案1】:

这很奇怪,我不知道为什么我以前的代码不起作用。但是我找到了一种新方法,通过使用 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);
      }});
    });

我删除了我的选择语法的 onchange 属性 并更改 php 函数以将 id 从 post 更改为 get

$id=$this->input->get('option');

【讨论】:

  • 默认方法是get
【解决方案2】:

改变你的 ajax_template() 方法

您正在从 M_template 作为数组获得响应。你不能像那样回显数组。 使用 echo json_encode($arrayname)。在你的情况下 echo json_encode($q['content']);

并确保在 ajax 中提及 dataType:'json'

【讨论】:

    【解决方案3】:

    你能调用你的函数吗

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

    【讨论】:

    • 查询没有问题,我在 id 上使用静态变量,它从数据库中回显正确的值。
    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 2020-10-17
    • 2013-03-01
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多