在对datatables做后端数据填充的时候,遇到一个,翻页问题。在多次操作翻页后,总是提示加载中。反了很多博客没有找到原因。

经过测试,发现原来自己坑了自己。

代码如下:

datatables : {

            init : function (table_id,ajax_url,columns,buttons,searchParams) {

                if(null == columns || undefined == columns){
columns = [];
} if(null == buttons || undefined == buttons){
buttons = [];
} var $t_table = $("#" + table_id);
var $api_table = $t_table.dataTable({
language: {
"sProcessing": "处理中...",
"sLengthMenu": "每页 _MENU_ 项",
"sZeroRecords": "没有匹配结果",
"sInfo": "当前显示第 _START_ 至 _END_ 项,共 _TOTAL_ 项。",
"sInfoEmpty": "当前显示第 0 至 0 项,共 0 项",
"sInfoFiltered": "(由 _MAX_ 项结果过滤)",
"sInfoPostFix": "",
"sSearch": "搜索:",
"sUrl": "",
"sEmptyTable": "表中数据为空",
"sLoadingRecords": "载入中...",
"sInfoThousands": ",",
"oPaginate": {
"sFirst": "首页",
"sPrevious": "上页",
"sNext": "下页",
"sLast": "末页",
"sJump": "跳转"
},
"oAria": {
"sSortAscending": ": 以升序排列此列",
"sSortDescending": ": 以降序排列此列"
}
},
ajax : {
url:ajax_url,
data:function (d) {
if(undefined != searchParams && null != searchParams )
$.each(searchParams,function (i,val) {
d[i] = val;
}); }
},
processing: true,
serverSide: true,
dom: "<'row' <'col-md-12'B>><'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r><'table-scrollable't><'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>",
columns : columns,
buttons: buttons }).api();
return $api_table; }
}
 var columns = [
{data:'itemName'},
{data:'itemIcon',
render:function (data, type, row, meta) { return '<img src="'+row.itemIcon+'" width="25" height="25"/>';
}
},
{data:'id'},
{data:'extNeedAmount'},
{
data:'id',
render:function (data, type, row, meta) {
return '<a class="btn-edit">操作</a>';
}
}
]; var buttons = [
{
text: '添加',
className: 'btn green ',
action: function ( e, dt, node, config ) {
$("#addLevelModel").modal("show");
}
}
]; var table = Q.datatables.init('level_table','/admin/basic/level/loaddata',columns,buttons);

后端代码

    /**
* 加载表格内容
* @return type
*/
public function loadDataAction()
{ $column_name = $this->request->get('columns')[$this->request->get('order')[0]['column']]['data'];
$column_order = $this->request->get('order')[0]['dir'];
$search_value = $this->request->get('search')['value']; $params = array(
'order'=>$column_name.' '.$column_order,
'conditions'=>'itemType = '.$this->mItemType.' and ( itemName LIKE "%'.$search_value.'%" )'
);
$recordsTotal = SysItem::count(array( 'conditions'=>'itemType = '.$this->mItemType));
$recordsFiltered = SysItem::count($params); $params['limit'] = array('number' => intval($this->request->get('length')), 'offset' => intval($this->request->get('start')));
$data = SysItem::find($params)->toArray();
$result = array(
'draw'=>intval($this->request->get('draw')),
'recordsTotal'=>$recordsTotal,
'recordsFiltered'=>$recordsFiltered,
'data'=>$data
);
return $this->response->setJsonContent($result);
}

特别注意的地方:

'draw'=>intval($this->request->get('draw'))
draw要原样返回,不然会出现一直加载中,本来我用start做返回的,就 只能前翻,后翻页就出现问题。
前端只要不需要做翻页函数处理,回调部分,我也默认了。datatables非常强大,各种排序过滤功能,这里我没有做代码展示。后面的学习中,再继续追加到这里。

datatables ajax后端请求那些坑的更多相关文章

  1. 关于.Net Core 前后端分离跨域请求时 ajax并发请求导致部分无法通过验证解决办法。

    项目中有这样一个页面.页面加载的时候会同时并发6个ajax请求去后端请求下拉框. 这样会导致每次都有1~2个“浏览器预请求”不通过. 浏览器为什么会自动发送“预请求”?请看以面连接 https://b ...

  2. 【坑】前端使用ajax异步请求以后,springMvc拦截器跳转页面无效

    文章目录 前言 `$.ajaxSetup( )` 后记 前言 本文着重解决前后端分离开发的页面调整问题. 笔者,在做一个需求,需要对访问网站,但是没有登录的用户进行拦截,将他们重定向到首页. 很简单的 ...

  3. 实现Web请求后端Api的Demo,实现是通过JQuery的AJAX实现后端请求,以及对请求到的数据的解析处理,实现登录功能

    本篇实现Web请求后端Api的Demo,实现是通过JQuery的AJAX实现后端请求,以及对请求到的数据的解析处理,实现登录功能需求描述:1. 请求后端Api接口地址2. 根据返回信息进行判断处理前端 ...

  4. ajax异步请求

    做前端开发的朋友对于ajax异步更新一定印象深刻,作为刚入坑的小白,今天就和大家一起聊聊关于ajax异步请求的那点事.既然是ajax就少不了jQuery的知识,推荐大家访问www.w3school.c ...

  5. ajax同步与异步的坑

      之前工作中一个需求,需要动态的添加一组下拉菜单并为这个菜单绑定一个插件,很明显获取数据用Ajax,这本身是没错的,坑就坑在我用了 同步请求,当服务器端正确返回数据时再去执行下一个方法,这逻辑本身没 ...

  6. DataTables ajax + bootstrap 分页/搜索/排序/常见问题

    最近学校的网站建设需要,尝试使用了下Jquery dataTables控件,接触过C#的人都知道,C#中也含有一个DataTable,但它和我们今天讨论的东西无关 我使用的是官网最新的DataTabl ...

  7. ajax异步请求302分析

    1.前言 遇到这样一种情况,打开网页两个窗口a,b(都是已经登录授权的),在a页面中退出登录,然后在b页面执行增删改查,这个时候因为授权原因,b页面后端的请求肯定出现异常(对这个异常的处理,进行内部跳 ...

  8. 解决ant Design dva ajax跨越请求 (status=0)

    今天实现了antd作为前端展现,python flask作为后端的数据填充,完全两个独立的服务:过程中遇到ajax跨越请求问题,导致status一直等于0,原来是这么写的: xmlhttp.open( ...

  9. 使用pace监控ajax踩过的坑

    使用vue.js开发移动端的活动页面时,有时候会出现因为请求的数据没有返回而使得当前活动页结构混乱或者不美观,这个时候可以考虑使用pace.js,通过设置参数值,在ajax全部请求结束之前显示load ...

随机推荐

  1. 51nod1305 Pairwise Sum and Divide

    题目链接:51nod 1305 Pairwise Sum and Divide 看完题我想都没想就直接暴力做了,AC后突然就反应过来了... Floor( (a+b)/(a*b) )=Floor( ( ...

  2. python 异常处理、文件常用操作

    异常处理 http://www.jb51.net/article/95033.htm 文件常用操作 http://www.jb51.net/article/92946.htm

  3. 深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(一)---Mybatis入门>, 写了一个Demo简单体现了一下Mybatis的流程.本次,将简单介绍一下Mybatis的配置文件: 上次例子中,我们 ...

  4. CSS设置DIV背景色渐变

    div{ width: 200px; height: 200px; FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=, ...

  5. Oracle通过一个Value值查询数据库

    ---恢复内容开始--- 大家在想看看数据库中有哪些数据表中,哪些字段中有“helloworld” 这个字符串,现在数据库所有的表,视图都不能直接提供,所有必须通过循环去访问所有的数据表,所有的字段列 ...

  6. cocoapod集成失败,无法找到头文件的解决办法

    在终端更新pod的时候,提示警告: target overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Target Support ...

  7. 非对称加密算法--DH

    注意:本节内容主要参考自<Java加密与解密的艺术(第2版)>第8章“高等加密算法--非对称加密算法” 11.1.非对称加密算法 特点: 发送方和接收方均有一个密钥对(公钥+私钥),其中公 ...

  8. Java集合类学习笔记(List集合)

    List集合是指一个元素有序.可重复的集合,集合中每个元素都有其对应的顺序索引. ArrayList和Vector作为List集合的两个典型实现,完全支持List接口的全部功能,并且在用法上几乎完全相 ...

  9. iOS安全—阻止tweak注入hook api

    http://blog.csdn.net/zcrong/article/details/51617348 在Other Linker Flags中添加: -Wl,-sectcreate,__RESTR ...

  10. ORA-06552: PL/SQL: Compilation unit analysis terminated ORA-06553: PLS-553: character set name is not recognized

    首先,确认字符集是否修改的不彻底.SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET,DECODE(TYPE#, 1, DECODE( ...