如何使用fnServerData?

Sha*_*ane 4 ajax jquery jquery-datatables

谁能告诉我如何使用fnServerData

$(document).ready( function() {
  $('#example').dataTable( {
    "bProcessing": true,
    "bServerSide": true,
    "sAjaxSource": "xhr.php",
    "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
      oSettings.jqXHR = $.ajax( {
        "dataType": 'json',
        "type": "POST",
        "url": sSource,
        "data": aoData,
        "success": fnCallback
      } );
    }
  } );
} );
Run Code Online (Sandbox Code Playgroud)

下面是我的Ajax调用,我想ajax call用fnServerData 替换它.

   $.ajax({
        type: 'GET',
        url: url,
        jsonp: true,
        contentType: "application/json",
        dataType: 'jsonp',
        success: function (data) {
            $.each(data.value, function(i,item){
                table.fnAddData(item);
            });
        },
        error: function (e) {
            console.log(e.message);
        }
    });
Run Code Online (Sandbox Code Playgroud)

http://datatables.net/ref#fnServerData

什么是sSource,fnCallback和oSettings?谁能告诉我如何使用fnServerData

小智 6

sSource,fnCallback和oSettings由Datatables生成.

sSource是你的ajax调用的url.初始化数据表时,请在sAjaxSource中指定它.所以你应该把你的url var作为sAjaxSource传入.

oSettings由datatables js创建和维护.它存储有关数据表状态的重要信息.详细文档可在此处获取:https: //datatables.net/docs/DataTables/1.9.0/DataTable.models.oSettings.html

但是,我认为你的成功功能是不必要的.您应该在初始化期间指定aoColumns作为选项,然后数据表将为您填充数据.

$(document).ready( function() {
 $('#example').dataTable( {
   "aoColumns": [
       { "mData": "engine" },
       { "mData": "browser" },
       { "mData": "platform.inner" },
       { "mData": "platform.details.0" },
       { "mData": "platform.details.1" }
     ]
   }),
   "bProcessing": true,
   "bServerSide": true,
   "sAjaxSource": url,
   "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
     oSettings.jqXHR = $.ajax( {
       "dataType": 'json',
       "type": "POST",
       "url": sSource,
       "data": aoData,
       "success": fnCallback,
       "error": function (e) {
           console.log(e.message);
       }
     });
   }
 });
});
Run Code Online (Sandbox Code Playgroud)

有关aoColumns的更多信息,请访问:http://www.datatables.net/usage/columns 此外,请查看数据表页面上的示例.应该有你需要的任何例子:http: //www.datatables.net/usage/columns

此致,Saz