2014-04-28 61 views
0

這是我第一次嘗試datatables。我想調用ajax函數從數據庫返回數據(MariaDB),並填充php文件中現有tablerowscells沒有數據從ajax調用返回給jquery數據表

有關數據域代碼的簡化版本是這樣的:

$('#tbl_resultados').dataTable({ 
     "bProcessing": true, 
     "sAjaxSource": "/apls/indicadores/indic_acess.php", 
     "sAjaxDataProp": "data", 
     "fnServerData": function (sSource, aoData, fnCallback) { 
     request = $.ajax({ 
       "dataType": 'json', 
       "type": "GET", 
       "url": sSource, 
       "data":{ 
        "fn": "lines", 
        "indic_per": indic_per, 
         }, 
       "success": fnCallback 
      }); 
     }, 

     "aoColumns": [ 
      { "mDataProp": "id"}, 
      { "mDataProp": "per"}, 
       ], 
    }); 

我已經試過與不"bServerSide": true,,但不能獲取要顯示在table數據。 Firebug返回TypeError: aData is undefined

以下正在說的the example我在php中構建了一個函數,它返回一個json的結構。

function getLines() 
{                        
echo "{ \"aData\":[ 
    [ 
     \"25983\", 
     \"2010\" 
    ],           
    [ 
     \"90420\", 
     \"2011\" 
    ] 
    ] 
    }"; 
} 

就像我說的,我已經與datatables沒有經驗不知道是否使用aDataaaData,還是什麼嘗試更多。

回答

0

下面是AJAX源的其他例子:
http://datatables.net/examples/data_sources/ajax.html

它說:
DataTables expects an object with an array called "aaData" with the data source.

以下是他們的一些AJAX回報:

{ "aaData": [ 
    ["Trident","Internet Explorer 4.0","Win 95+","4","X"], 
    ["Trident","Internet Explorer 5.0","Win 95+","5","C"], 
    ["Trident","Internet Explorer 5.5","Win 95+","5.5","A"], 
    ["Trident","Internet Explorer 6","Win 98+","6","A"], 
    ["Trident","Internet Explorer 7","Win XP SP2+","7","A"], 
    . 
    . 
    . 
    ["Misc","Links","Text only","-","X"], 
    ["Misc","Lynx","Text only","-","X"], 
    ["Misc","IE Mobile","Windows Mobile 6","-","C"], 
    ["Misc","PSP browser","PSP","-","C"], 
    ["Other browsers","All others","-","-","U"] 
] } 

在我的身邊,我總是使用aaData來啓動表格數據。
除此之外,您可以返回更多選項(如sEchoiTotalRecords,iTotalDisplayRecords,...)以完成渲染。

+0

有一些我必須錯過...我用你的例子。在'getLines'中''Php'函數做了一個'迴應'你的回答';'並且逃脫了引號。在firebug中,作爲對'http'' GET'方法的響應,有:'{「aaData」:[「Trident」,「Internet Explorer 4.0」,「Win 95 +」,「4」], [ 「Trident」,「Internet Explorer 5.0」,「Win 95 +」,「5」], [「Trident」,「Internet Explorer 5.5」,「Win 95 +」,「5.5」], [「Trident」 Internet Explorer 6「,」Win 98 +「,」6「], [」Trident「,」Internet Explorer 7「,」Win XP SP2 +「,」7「] ]。但仍然得到'TypeError:aData是未定義的'錯誤。 – Luis

+0

您是否嘗試從示例(通過複製源代碼)開始,並試圖替換您需要的內容? – PoulsQ

+0

這個例子不像我打算做的那樣:''sAjaxSource「:'../ examples_support/json_source.txt',而不是使用'ajax'調用一個php函數。 – Luis

0

Datatables.net示例不能與MariaDB服務器一起使用(對於使用不同形式的root用戶登錄不同的舊密碼加密)。我不知道它爲什麼沒有,但它不響應任何數據(ajax)。在Windows MariaDB服務器上進行測試。

解決方案:如果您不想卸載MariaDB服務器並遷移(導出/導入)數據,請在不同的端口上安裝MySQL服務器服務/守護程序。

+0

真正的解決方案:在MariaDB/MySQL連接字符串上進行明確的字符集定義(例如:charset = utf8)。 – Titonus