首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Codeigniter中的自动完成会导致服务器错误。

Codeigniter中的自动完成会导致服务器错误。
EN

Stack Overflow用户
提问于 2016-12-08 11:03:53
回答 3查看 247关注 0票数 0

我得到了500个内部服务器错误,这段代码试图在Codeigniter中实现自动完成。

代码语言:javascript
运行
复制
 http://localhost/pier_capitan/index.php/commissary/autocomplete_items?term=a

下面是我的密码。

视图

代码语言:javascript
运行
复制
    <div class="row">
            <div class="col-md-12" style="margin: 0 auto; margin-top: 10px;">
                <div class="panel panel-primary">
                    <div class="panel-heading"><h3>Add New Inventory</h3></div>
                    <div class="panel-body">
                        <form class="add_new_inventory form-inline" role="form" id="add_new_inventory" method="post">
                            <div class="form-group form-control">
                                <label>Date</label>
                                <input type="date" name="date_added" required>
                            </div>

                            <div class="btn btn-warning pull-right" onclick="add_new_row()">Add more</div>

                            <hr>
                            <div style="font-weight: bold;">Total Php <input type="text" id="total_result" placeholder="0.00" class="form-control" readonly></div>
                            <br>

                            <table class="table table-striped table-bordered table-condensed" id="add_new_inventory">
                                <colgroup>
                                    <col span="1" style="width: 20%;">
                                    <col span="1" style="width: 10%;">
                                    <col span="1" style="width: 10%;">
                                    <col span="1" style="width: 10%;">
                                    <col span="1" style="width: 5%;">
                                </colgroup>
                                <thead>
                                    <tr>
                                        <th class="ui-helper-center">Item Name
                                        </th>
                                        <th class="ui-helper-center">Quantity</th>
                                        <th class="ui-helper-center">Amount</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr>
                                        <td width="50%">
                                            <input type="text" id="item_name" name="item_name[]" placeholder="Item Name" class="form-control input-sm" style="width: 100%;">
                                        </td>
                                        <td width="10%">
                                            <input type="text" name="quantity[]" placeholder="quantity" class="form-control input-sm">
                                        </td>
                                        <td width="10%">
                                            <input type="number" name="amount[]" placeholder="Amount" class="form-control input-sm">
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                        </form>
                    </div><!-- panel body -->
                </div><!-- panel -->
            </div><!-- col-md-12 -->
        </div><!-- row -->

    </div><!-- container -->

</body>
<script type="text/javascript" src="<?php echo base_url('assets/jquery/jquery.js');?>"></script>
<script type="text/javascript" src="<?php echo base_url('assets/bootstrap/js/bootstrap.min.js');?>"></script>
<script type="text/javascript" src="<?php echo base_url('assets/datatables/js/jquery.dataTables.min.js');?>"></script>
<script type="text/javascript" src="<?php echo base_url('assets/datatables/js/dataTables.bootstrap.js');?>"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js" ></script>
<script type="text/javascript">


    $(document).ready(function(){
            var url;
        $('input[name=date_added]').val('<? echo date('Y-m-d')?>');

        $('#item_name').autocomplete({
            source:function(request, response){
                    url="<?php echo site_url('commissary/autocomplete_items');
                    ?>";
                $.ajax({
                    url:url,
                    datatype:"json",
                    data:request,
                    type:"POST",
                    success:function(data){
                    response(data.items);
                  }
                });
            }
        });
});

控制器

代码语言:javascript
运行
复制
public function autocomplete_items(){
        return $this->items_model->autocomplete_items($this->input->post('term'));

模型

代码语言:javascript
运行
复制
public function autocomplete_items($item){
    $item=trim($item);
    $this->db->select('item_name');
    $this->db->from('inv_itms');
    $this->db->like('item_name',$item);
    $this->db->limit('5');
    $query=$this->db->get();

    if($query->num_rows()>0){
        $data['items']=array();

        foreach($query->result() as $row){
            $data['items'][]=array(
                    'label'=>$row->item_name,
                    'value'=>$row->item_name
                );
        }
    }
    echo json_encode($data);
}

在输入"item_name“时,当我输入一个字母时,我应该得到结果,但是我得到了500个服务器错误。你能帮帮我吗。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-08 11:31:23

您的问题是,传递给自动完成来源的请求参数是一个具有单个属性项的对象,因此如果在输入中键入foo,请求对象将是{term:'foo'}。你有两个选择

由于您已经将完整的请求对象发送到您的服务器,所以只需在控制器中使用它即可。

代码语言:javascript
运行
复制
public function autocomplete_items(){
    return $this->items_model->autocomplete_items($this->input->post('term'));
}

或者,在ajax调用中,使用自定义对象发送关键字。

代码语言:javascript
运行
复制
$.ajax({
    url:url,
    datatype:"json",
    type: "POST",
    data:{ item_name: request.term },
    success:function(data){
        if(data.items){
            response(data.items)
        }
    }
});

请注意,我还在ajax中添加了类型:"POST“,它也应该与第一个选项一起使用。

票数 1
EN

Stack Overflow用户

发布于 2016-12-08 11:16:16

主计长变更

代码语言:javascript
运行
复制
public function autocomplete_items(){
    $data = $this->model->...;
    echo $data;
}
票数 0
EN

Stack Overflow用户

发布于 2016-12-08 12:52:23

您正在使用ajax post方法将数据从视图发送到控制器,并试图通过

$this->input->post('term'),您无法通过此函数接收get变量。

主要有两个原因导致505个错误:

  1. .htaccess代码有问题
  2. 您的模型正在发送大量数据。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41037902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档