ajax成功函数无法处理数据表

时间:2016-12-29 11:03:33

标签: javascript jquery ajax datatables

我正在使用datatable显示来自数据库mysql的列表

我需要在表加载结束时更新一些输入,然后我使用成功函数,但这似乎阻止了数据呈现

var table = $('#example').DataTable({
'processing': true,
'serverSide': true,
'ajax': {
  type: 'POST',
  'url': url,
  'data': function (d) {
    console.log(d.order);
    return JSON.stringify( d );
  },

  // EDIT this "my" success function
  success: function( data ) {
    $('#my_input').val(data.return);
  }
}
杰森回来了:

{
 "data":[[ (datatable value) ]],
 "returned":"myvalue"
}

这里是jsfiddle

EDIT http://jsfiddle.net/ntcwust8/95/

3 个答案:

答案 0 :(得分:2)

只需删除success回调。

  

成功 - 不得因为内部使用而被覆盖   数据表。操纵/转换服务器返回的数据   使用ajax.dataSrc(上面),或使用ajax作为函数

Datatable默认处理success回调,不要覆盖它。

而是使用complete的{​​{1}}选项在数据加载后执行某些操作。

更新了fiddle

答案 1 :(得分:2)

您只需要删除成功回调。

var table = $('#example').DataTable({
        'processing': true,
        'serverSide': true,
        'ajax': {
          type: 'POST',
          'url': url,
          'data': function (d) {
            console.log(d.order);
            return JSON.stringify( d );
          }
        }

修改

你需要使用它将在ajax完成后调用的ajax.dataSrc属性。 它也适用于刷新 https://datatables.net/reference/option/ajax.dataSrc

var table = $('#example').DataTable({
    'ajax': {
      type: 'POST',
      'url': url,
      'data': function (d) {
        console.log(d.order);
        return JSON.stringify( d );
      },
      "dataSrc": function (json) {
       $("#mydata").val(json.recordsTotal);
       return json.data;
        }
    },

  });

这里更新了小提琴。 http://jsfiddle.net/2jkg3kqo/2/

答案 2 :(得分:2)

Datatable有自己的complete事件,名为initComplete

如果您重新定义success,那么您将覆盖Datatable自己的功能。

var table = $('#example').DataTable({
    'processing': true,
    'serverSide': true,
    'ajax': {
    ....
    ....
    },    
   'initComplete':function(settings, json){
        alert($('#example tbody tr').length+ ' records on screen');
 });

参考:https://datatables.net/reference/option/initComplete

更新fidle:http://jsfiddle.net/ntcwust8/94/