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

CodeIgniter中Ajax POST参数无法传递到Model层问题咨询

问题原因与修复方案

你的代码存在3处明确错误,直接导致参数传递异常和功能报错:

  • 核心错误:控制器调用模型传参时存在变量拼写/赋值问题。你在控制器中把AJAX传入的参数存在$lastid变量中,若实际代码里调用模型方法时误传入了未定义的$last_id变量(和模型形参同名但控制器内从未给该变量赋值),传入模型的参数就会是NULL,最终生成的SQL语句缺失id <后的对比值,触发语法错误。即使你贴出的代码里传的是$lastid,也要确认控制器中获取参数后没有被其他逻辑覆盖为空、没有意外unset该变量。
  • 语法错误:控制器返回结果时函数名拼写错误,jsone_encode是错误写法,正确的PHP内置JSON编码函数是json_encode,拼写错误会导致返回格式异常,前端无法正常解析结果。
  • 冗余错误:模型层重复调用了两次$this->db->order_by('id desc');,会让最终生成的SQL出现重复的ORDER BY子句,虽然不会直接阻断执行,但属于无效冗余代码,删除其中一处即可。
  • 前端兼容问题:AJAX请求未声明返回数据类型,建议补充dataType: 'json'配置,避免前端拿到非JSON格式数据时解析失败。

修复后可直接运行的代码

AJAX请求代码

function loadmore(){
    var pid = $('#last_id').val();
    // 建议把base_url定义在全局公共位置,不要写在函数内部重复声明
    var base_url = "<?php echo base_url(); ?>";
    
    $.ajax({
        type : "post",
        url: base_url+"News/loadmore_news",
        data : {'pid' : pid},
        dataType: 'json', // 补充声明返回格式为JSON
        success : function(res){
            for(var i=0;i<res.length;i++){
                // 业务逻辑
            }
        }
    });
}

控制器代码

function loadmore_news(){
    $lastid = intval($this->input->post('pid')); // 转成整数类型,过滤非法参数
    // 加一层参数非空校验,空值直接返回空数组避免SQL报错
    if($lastid <= 0){
        echo json_encode([]);
        return;
    }
    $more_news = $this->news_model->get_more_news($lastid);
    echo json_encode($more_news); // 修正函数拼写错误
}

模型层代码

function get_more_news($last_id){
    // 加一层参数兜底校验,避免空值触发SQL错误
    if(intval($last_id) <= 0){
        return [];
    }
    $this->db->select('*');
    $this->db->from('press');
    $this->db->where(array(
        'id <' => intval($last_id), // 强制转整数,同时防范SQL注入
        'domain_id'=> config_item('domain_id')
    ));
    $this->db->order_by('id desc'); // 删除重复的order_by调用
    $this->db->limit(6);
    $query = $this->db->get();
    return $query->result();
}

修复后生成的正确SQL示例

SELECT * FROM `press` WHERE `id` < 123 AND `domain_id` = '86' ORDER BY `id` desc LIMIT 6

不会再出现id < AND的语法错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:03:19