You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codeigniter项目实现autocomplete功能时出现500内部服务器错误求解决

问题修复方案

你遇到的500错误由以下几处代码问题导致,按优先级排查修复即可:

  • 函数名拼写错误
    模型中判断参数的asset($postData['search'])是拼写错误,PHP判断变量存在且非空应使用isset()或!empty();asset()是CI用于生成静态资源路径的辅助函数,传入不符合要求的参数会直接抛出致命错误,触发500响应。
  • 模型加载方式错误
    CodeIgniter框架不可直接用new Crud_model的方式实例化模型,需先调用框架的模型加载方法$this->load->model('Crud_model'),否则会报类未找到的致命错误。
  • SQL语法风险
    直接拼接用户输入到SQL语句中,除了存在SQL注入风险外,若用户输入包含单引号等特殊字符,会触发SQL语法错误导致500,建议使用CI查询构造器自带的like方法。
  • CSRF校验问题(可选排查)
    若你开启了CI的全局CSRF防护,AJAX POST请求未携带CSRF令牌也会返回500,需要在AJAX请求参数中补充对应令牌。

修正后代码

控制器代码

public function counterpartslist(){
    // 加载模型
    $this->load->model('Crud_model');
    $postData = $this->input->post();
    $data = $this->Crud_model->getcounterparts($postData);
    // 声明JSON响应头避免解析异常
    $this->output->set_content_type('application/json');
    echo json_encode($data);
}

模型代码

function getcounterparts($postData){  
    $response = array();
    // 替换asset为!empty判断参数
    if(!empty($postData['search'])){   
        $this->db->select('user_id,business_name');
        // 使用框架原生like方法,自动转义特殊字符
        $this->db->like('business_name', $postData['search']);
        $records = $this->db->get('user_table')->result();
        foreach($records as $row ){
            $response[] = array(
                "value"=>$row->user_id,
                "label"=>$row->business_name
            );
        }
    } 
    return $response;
}

(可选)开启CSRF后的jQuery代码调整

$("#search_counterpart").autocomplete({
source: function( request, response ) {    
      $.ajax({
        url: "<?=base_url()?>index.php/admin/counterpartslist",
        type: 'post',
        dataType: "json",
        data: {
          search: request.term,
          // 补充CSRF令牌
          "<?= $this->security->get_csrf_token_name() ?>": "<?= $this->security->get_csrf_hash() ?>"
        },
        success: function( data ) {
          response( data );
        }
      });
    }, 
  });

如果修复后仍有问题,可将CI根目录index.php中的ENVIRONMENT参数设置为development开启调试模式,直接查看具体错误信息快速定位问题。

内容的提问来源于stack exchange,提问作者Dileep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 02:03:01