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

CodeIgniter如何将count_all_results结果返回给ajax success函数

问题修复方案

代码无法正常赋值是三个核心错误导致的,按如下修正即可:

错误点梳理

  • 前后端数据结构不匹配:模型层count_all_results()直接返回整数格式的统计值,控制器直接对这个整数做json_encode输出后,前端AJAX拿到的返回值本身就是计数数字,不存在你代码里写的result.result属性,自然取不到值
  • jQuery方法使用错误:jQuery选择器返回的对象没有原生DOM的.value属性,给表单元素赋值需要调用.val()方法;另外.empty()方法作用是清空DOM节点的子元素,对input这类表单元素无效
  • 冗余无效代码:模型层定义的$sql变量没有被任何查询调用,属于无用代码;后端返回单个数值时,前端不需要调用$.each做循环遍历

修正后各层代码

控制器方法

public function get_subaccount_count($id){ 
    $total = $this->accounts_model->get_count($id);
    echo json_encode($total);
}

模型层方法

public function get_count($id){
    // 删除未被使用的冗余$sql定义,count_all_results会自动生成COUNT查询语句
    $this->db->where('node_parent', $id);
    return $this->db->count_all_results($this->tablename);  
}

视图层JavaScript代码

<script>
$('#sub_account').change(function(){
    $.ajax({
        type: 'GET',
        url: "<?php echo base_url();?>index.php/accounts/get_subaccount_count/"+$('#main_code').val(),
        dataType: "json",
        success: function (totalCount) {
            // totalCount就是后端返回的记录总数,直接赋值即可
            // 如果#account_code是input/textarea等表单元素,用val()赋值
            $('#account_code').val(totalCount);
            // 如果要实现计数+1生成新编码,直接改为 $('#account_code').val(totalCount + 1);
            // 如果#account_code是div/span等普通文本标签,把val()换成text()即可
        }  
    });
});
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:03:50