了解Datatables中的fnServerData

时间:2014-02-11 14:19:40

标签: jquery jquery-datatables

我正在尝试在我的项目中使用Datatables。我想了解使用“fnServerData”回调选项。我已经阅读了文档Here,并看到了以下示例代码 -

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

这里的“sSource”,“aoData”参数是什么以及我们如何在其中提供价值? 另外,我们可以提交一个动态获取JSON数据的表单,而不是将JSP或PHP作为源(sAjaxSource)吗?

1 个答案:

答案 0 :(得分:23)

fnServerData是dataTables中的内部函数,可以使用您自己的ajax处理程序进行操作。在这种情况下,使用舒适的jQuery函数Read more here

参数在dataTables核心中定义,并且按此特定顺序是必需的。

sSource是数据源所在的URL。它设置为初始化为sAjaxSource中的值。在这种情况下xhr.php

aoData是将发送到数据源的参数数组。这默认包含paginationinfo,sortinginfo,filterinfo等(由核心自动设置),dataSource脚本应该对其做出反应。 (例如:将sql查询限制为pagesize等。)要向请求发送更多信息,您可以将其他值推送到aoData。像这样:

"fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
               aoData.push( { "name": "Input1", "value": $("#data1").val() } );
               aoData.push( { "name": "Input2", "value": $("#data2").val() } );
  oSettings.jqXHR = $.ajax( {
  

(将通过jQuery获取名为data1和data2的两个输入字段的值   表单并将其作为Input1和Input2包含在POST中

如果您想知道发送的是什么,可以使用Firebugs控制台查看POST数据,也可以将类型更改为GET。然后你会在地址栏中看到传递的参数(请注意,这可能是一个非常长的字符串,可能会被切断)。

fnCallback也是核心的内置函数,可以被覆盖,但在这种情况下不是。如果你想在收到数据后在JS中进行一些后处理,你应该提供自己的函数。

关于问题的第二部分:当然,您不需要使用PHP或JSP。任何可以动态提供JSON数据的服务器端语言都很好(Phyton,Node,你可以命名......)