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
相关产品推荐
相关产品推荐

