2013-01-02 29 views
2

我想快速創建使用DataTables從內部API的結果的簡單顯示。該API的結構如下返回JSON:數據表與服務器端JSON(自定義對象)

obj { 
    status: 1, 
    results: 100, 
    offset: 25, 
    limit: 25, 
    data: [ 
     [1]: { 
      title: "Blah blah one", 
      description: "Doesn't really matter", 
      misc: "Yadda yadda" 
     }, 
     [2]: { 
      title: "Blah blah two", 
      description: "Doesn't really matter", 
      misc: "Yadda yadda" 
     }, 
    ] 
} 

我不能/不想改變API結構僅僅是因爲數據表採用的是怪異的結構,但我想訪問內置的功能分頁,動態加載等數據表似乎允許自定義數據對象,我已經得到了表具有以下加載:

$(document).ready(function() { 
    $('#example').dataTable({ 
     "bProcessing": true, 
     "bServerSide": true, 
     "sAjaxSource": "http://api.oursite.com/api?limit=100", 
     "fnServerData": function(sUrl, aoData, fnCallback, oSettings) { 
      oSettings.jqXHR = $.ajax({ 
       "url": sUrl, 
       "data": aoData, 
       "success": fnCallback, 
       "dataType": "jsonp", 
       "cache": false 
      }); 
     }, 
     "sAjaxDataProp": "data", 
     "aoColumns": [ 
      { "mData": "title" }, 
      { "mData": "description" }, 
      { "mData": "misc" }, 
     ] 
    }); 
}); 

但是,沒有分頁或排序功能工作。我認爲這是因爲DataTables在對象 - 「iTotalRecords」和「iTotalDisplayRecords」中需要結果計數和分頁變量。它是否正確?有沒有辦法使用api變量?提前致謝。 我目前沒有得到任何錯誤在開發控制檯,所以如果它錯誤它是這樣做的默默...

回答

2

雖然初始化數據表,而不是直接分配源到Ajaxsource,您可以將aaData設置爲JavaScript函數,您可以在其中操作以僅返回obj.data。你需要手動處理一些事情。

 $('#tblExample').dataTable({ 
     "bJqueryUI": true, 
     "bDestroy":true, 
     "bSortable": false, 
     "sAjaxSource": "", 
     "aaData":GetData(), 
     "aoColumns": [ 
        { 
         "sTitle":"Index","mDataProp": null, "sWidth": "20px", "sDefaultContent": "<span class='ui-icon ui-icon-circle-close' onclick='RemoveActiveItem(this);'></span>", "bSortable": false}, 
        { "mDataProp": "Year"}, 
        { "mDataProp": "Month"}, 
        { "mDataProp": "Savings"}   
     ] 
    });   
相關問題