使用jQuery DataTables自定义REST数据源

时间:2012-12-10 21:00:42

标签: javascript rest datatables

我有一个带有页面和大小参数的REST端点:

  

http://someservice.com/api/accounts/10/0

在此示例中,它返回第一页,每页有10条记录。

现在,我想使用DataTablesfound this example on StackOverflow,我可以从REST响应中将数据添加到表中。

但是,这样,我将所有数据添加到表中。我希望能够在每页添加数据页面,并向每页的端点页面发出请求。例如,在页面加载时,我为该页面发出REST请求。当我点击第二页时,我再次提出请求,获取该数据的数据。

在DataTables中有什么办法吗?

1 个答案:

答案 0 :(得分:3)

这应该有效:

     function fnGetKey( aoData, sKey ){
         for ( var i=0, iLen=aoData.length ; i<iLen ; i++ ){    
            if ( aoData[i].name == sKey )
               return aoData[i].value;        
         }
     return null;
     }

     $('#example').dataTable( {
      "bServerSide" : true,
      "sAjaxSource" : "http://someservice.com/api/accounts/10/0", //first page
      "sPaginationType": "two_button",
      "fnServerData": function ( sSource, aoData, fnCallback ) {
          var startIndex = fnGetKey(aoData, "iDisplayStart")
          var length = fnGetKey(aoData, "iDisplayLength")
          sSource="http://someservice.com/api/accounts/"+length+"/"+(startIndex/length + 1)
          $.getJSON( sSource, aoData, function (json) { 
              fnCallback(json)
          } );
       }
    });

因此,当您点击下一页或上一页时,您需要计算您现在所处的页面,并通过更改来源进行操作。