DataTablesを使用して、内部APIからの結果の簡単な表示をすばやく作成しようとしています。APIは次の構造で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"
},
]
}
DataTablesが奇妙な構造を使用しているという理由だけで、API構造を変更することはできません/したくないのですが、ページング、動的読み込みなどの組み込み機能にアクセスしたいと思います。DataTablesはカスタムデータオブジェクトを許可しているようです。私は次のようにロードするテーブルを取得しました:
$(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変数を使用する方法はありますか?前もって感謝します。現在、開発コンソールでエラーが発生していないため、エラーが発生している場合は、サイレントにエラーが発生しています...