datatables ajax接口,datatables ajax后端请求那些坑

在对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: ">r>>",

columns : columns,

buttons: buttons

}).api();

return $api_table;

}

}

var columns = [

{data:'itemName'},

{data:'itemIcon',

render:function (data, type, row, meta) {

return ''+row.itemIcon+'';

}

},

{data:'id'},

{data:'extNeedAmount'},

{

data:'id',

render:function (data, type, row, meta) {

return '操作';

}

}

];

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非常强大,各种排序过滤功能,这里我没有做代码展示。后面的学习中,再继续追加到这里。

来源:https://www.cnblogs.com/erick-x/p/5552386.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值