2017-08-30 74 views
0

我有HTTP GET URL這JSON在下面的格式返回數據:動態數據表中創建

{ 
    "columnDefs": [{ 
    "colIdentifier": "col1", 
    "title": "abc" 
    },{ 
    "colIdentifier": "col2", 
    "title": "xyz" 
    }], 
    "data": [{ 
    "col1": "data1", 
    "col2": "data2" 
    }] 
} 

我能夠通過使jQuery的同步得到這樣調用

var api_data; 
$.ajaxSetup({ async: false }); 

$.get("/getTableData", {}, function(data, status) { 
    api_data = data; 
}); 
$.ajaxSetup({ async: true }); 

創建的jQuery的dataTable之後,我正在處理api_data以創建jQuery數據表aoColumnDefs和aaData屬性。

這種方法存在的問題是我必須使用$.ajaxSetup({async: false});才能達到同樣的效果。

有無論如何我可以使用dataTable「fnServerData」屬性使其異步嗎?

是否有可能在fnServerData函數中獲取http數據本身,然後在其中執行諸如$('#dataTable').aoColumnDefs(aoColumnDefs)之類的操作?

+1

同步HTTP請求讓小貓哭。爲什麼不使用DataTables內置的AJAX方法? –

+0

@RoryMcCrossan fnServerData屬性用於可數據異步調用。問題是我們可以在其回調函數中設置aoColumnDefs來動態確定列嗎? – user811602

回答

0

爲什麼你需要使請求同步?

我有一個應用程序在各種選項卡上的數據表加載,並且如果用戶切換到尚未加載數據的選項卡,在選項卡激活功能,我引發異步$ .ajax請求到服務器爲其獲取數據。

在$ .ajax調用中,我定義了一個成功函數,一旦數據下載完成,函數將被調用,在任何需要的數據處理之後它將初始化數據表(我構建了一個自定義過濾器的負載,並做額外的處理負荷)

事情是這樣的簡化版本:

$.ajax({ 
    type: "POST", 
    url: "/getTableData", 
    data: JSON.stringify({ param1: value1 }), 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (response) { 
     var results = response.d; 
     DataTableInit(results); 
    }, 
    failure: function (msg) { 
     $('#TableLocation).html("Error: Unable to fetch data: " + msg); 
    } 
});