Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于类别的动态自动完成_Php_Jquery_Ajax_Codeigniter_Autocomplete - Fatal编程技术网

Php 基于类别的动态自动完成

Php 基于类别的动态自动完成,php,jquery,ajax,codeigniter,autocomplete,Php,Jquery,Ajax,Codeigniter,Autocomplete,我在尝试使用codeigniter基于combobox创建具有动态值的自动完成时遇到了一个问题, 我尝试过使用ajax,但没有成功 下面是我调用category中的项的ajax代码 <script type="text/javascript"> $(document).ready(function() { $("#jenis").change(function(){ $.ajax({ type : "PO

我在尝试使用codeigniter基于combobox创建具有动态值的自动完成时遇到了一个问题, 我尝试过使用ajax,但没有成功

下面是我调用category中的项的ajax代码

<script type="text/javascript">
$(document).ready(function() {  
    $("#jenis").change(function(){              
        $.ajax({
            type : "POST",
            url: "<?php echo base_url(); ?>whz/admin/get_item",
            dataType: "html",
            data : "item=" + $("#jenis").val(),
            success: function(data)
            { 
                $("#showitem").text(data);  
            }
        });
    });
});
</script>
我正在考虑使用json作为另一种选择,但我仍然没有足够的经验使用它

对不起,英语不好,
感谢您的帮助

这只是基于文档,因为我手边没有任何可以尝试的系统

您告诉jQuery您的AJAX响应是
“html”
,这意味着您加载的JavaScript将永远不会被执行,我相信。如果您将数据加载为
“script”
,那么它可能会起作用,但更好的方法确实是使用JSON

您的AJAX调用将如下所示:

<script type="text/javascript">
$(document).ready(function() {  
    $("#jenis").change(function(){              
        $.ajax({
            type : "POST",
            url: "<?php echo base_url(); ?>whz/admin/get_item",
            dataType: "json",
            data : "item=" + $("#jenis").val(),
            success: function(data)
            { 
                availableTags = data;
            }
        });
    });
});
</script>
您必须全局公开变量
availableTags
,才能通过将DOM更改为

<div id="showitem">
    <script>
     $(function() {
        availableTags = [
        <?php foreach ($item as $row){
                echo '"'.$row->item_name.'",';}?>
        ];
        $( "#autotags" ).autocomplete({
        source: availableTags
        });
     });
    </script>
</div>

$(函数(){
可用标签=[
];
$(“#自动标记”)。自动完成({
资料来源:availableTags
});
});
您可能还希望将其公开为
window.availableTags
,以便在浏览器控制台中检查其值


正如一开始提到的,我没有测试它,但我相信它应该会起作用。

我已经用我在互联网上找到的另一种方法修复了它,它可能不是最好的,但它对我有效, 这里是链接


感谢您的所有回答

您得到了什么错误?您的意思是当您输入某个值时,它没有得到任何ajax响应吗?@reza我没有得到任何错误,我发送到视图的代码不起作用,它只是显示代码,我试着使用
$(“#showitem”).html(数据)但什么也没发生。@RJAnoop是的,它没有得到任何响应all@PrimaWinangun我希望它不会输入
$(“#jenis”).change(function(){
也可以。当焦点离开字段时,更改事件将起作用。您应该使用keyup event而不是change。只需检查您是否正确使用ajax调用。我已经尝试了您的代码,但仍然不起作用,自动完成脚本仍然显示我第一次加载页面时设置的默认项您是否尝试过使用window.availableTags=availableTags公开变量,并在AJAX调用后检查其值?此外,AJAX调用是否获得您期望的JSON?(只需在浏览器的开发人员工具中查看请求)
<script type="text/javascript">
$(document).ready(function() {  
    $("#jenis").change(function(){              
        $.ajax({
            type : "POST",
            url: "<?php echo base_url(); ?>whz/admin/get_item",
            dataType: "json",
            data : "item=" + $("#jenis").val(),
            success: function(data)
            { 
                availableTags = data;
            }
        });
    });
});
</script>
public function get_item()
{
    $this->load->model('whz_model');
    $category = $this->input->post('item');
    $item=$this->whz_model->get_item_by_cat($category);

    $this->output
        ->set_content_type('application/json')
        ->set_output(json_encode($item)));
}
<div id="showitem">
    <script>
     $(function() {
        availableTags = [
        <?php foreach ($item as $row){
                echo '"'.$row->item_name.'",';}?>
        ];
        $( "#autotags" ).autocomplete({
        source: availableTags
        });
     });
    </script>
</div>