【问题标题】:How to use fnServerData?如何使用 fnServerData?
【发布时间】:2014-04-02 01:56:34
【问题描述】:

谁能告诉我如何使用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
      } );
    }
  } );
} );

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

   $.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);
        }
    });

http://datatables.net/ref#fnServerData

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

【问题讨论】:

    标签: jquery ajax jquery-datatables


    【解决方案1】:

    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);
           }
         });
       }
     });
    });
    

    更多关于 aoColumns 的信息在这里:http://www.datatables.net/usage/columns 另外,请查看数据表页面上的示例。你需要的任何东西都应该有一个例子: http://www.datatables.net/usage/columns

    问候, 萨斯


    【讨论】:

      【解决方案2】:
      "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {                               
          oSettings.jqXHR = $.post( sSource, aoData, function( data ) {               
              //alert(data.toSource());
      
              if ( ! parseInt(data.iTotalRecords) > 0 )
                  alert('ZeroRecords');
      
              fnCallback(data);
              //fnCustomCallback(data);
      
          },'json');
      }
      

      【讨论】:

        【解决方案3】:

        如果你想从客户端向服务器发送额外的字段,你可以像这样向aoData对象添加属性:

        "fnServerData": function (sSource, aoData, fnCallback, oSettings) {
             aoData.push({ "name": "Input1", "value": "xx" });
        
             oSettings.jqXHR = $.ajax({
                 "dataType": 'json',
                 "type": "POST",
                 "url": sSource,
                 "data": aoData,
                 "success": fnCallback
             });
        },
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-19
          • 1970-01-01
          • 2012-07-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-29
          相关资源
          最近更新 更多