2017-03-09 66 views
0

我有一個dot net aspx頁面,其表格設置爲使用AJAX調用從Web方法獲取數據的JQuery數據表(https://datatables.net/)。數據作爲JSON對象返回。儘管成功的響應,JQuery數據表無法從AJAX調用填充

每個部分的機制似乎正常工作。 Web方法被調用並返回一個有效的JSON對象(根據JSONLint),我可以訪問和處理AJAX調用的「success」回調函數中返回的數據。

但是,數據表出現在沒有任何主體行的頁面上,只是頁眉和頁腳。從.aspx頁面中

HTML部分

<div id="divIssueDetailsTable"> 
    <table id="tblIssueDetails" class="table"> 
     <thead> 
      <tr> 
       <th>Team</th> 
       <th>Score</th> 
      </tr> 
     </thead> 
     <tfoot> 
      <tr> 
       <th>Team</th> 
       <th>Score</th> 
      </tr> 
     </tfoot> 
     <tbody> 
     </tbody> 
    </table> 
</div> 

的Javascript功能來創建數據表(成功的回調函數裏面包括測試代碼來測試JSON對象返回)

$('#tblIssueDetails').DataTable(
    { 
     "processing": true, 
     "serverSide": true, 
     "cache": false, 
     "destroy": true, 
     "ajax": 
      { 
       type: "POST", 
       url: "WebServices/WSGetData.asmx/ReturnIssues", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       data: "", 
       success: function (results) { 
        toastr["success"]("AJAX call succeeded.", "Success:"); 
        var objJSON = $.parseJSON(results.d); 
        $(objJSON.data).each(function() { 
         alert(this.Age); 
        }); 
       }, 
       error: function(e) { 
        toastr["error"]("There has been a problem retrieving the information from the database. " + e.responseText, "Error:"); 
       }, 
       complete: function() { 
        $('#divIssueDetailsTable').show(); 
       } 
      } 
    }); 

什麼網絡方法返回(測試數據)

d:「{」data「: [{」Name「:」Freddy「,」Age「:」23「},{」Name「:」Jane「,」Age「:」23「} {「名稱」:「棒」,「時代」:「23」}] }」

奇怪的是,所有的獨立的部分似乎一切正常,但它只是不刷新表。

我無法在數據表上找到任何拒絕顯示數據的鏈接。我曾嘗試以下:

https://datatables.net/examples/basic_init/zero_configuration.html https://datatables.net/examples/data_sources/ajax.html fill datatable with json and web service Datatables not refreshing after second network request datatables dataSrc function not called on successful ajax response

任何幫助非常讚賞。

+0

當您從$。數據會發生什麼(objJSON.data)。每個?試試$(objJSON)。每個 –

+0

這是處理成功函數內部對象的測試代碼。如果我刪除「.data」,我會在警告框中顯示「undefned」。問題是數據表不顯示返回的數據。謝謝。 – BBJones

回答

2

ajax的數據表文件說:

success - 必須因爲它是在數據表內部使用覆蓋。要操作/轉換服務器返回的數據,請使用ajax.dataSrc(上面)或使用ajax作爲函數(如下所示)。

通過提供自己的success回調函數,您可以剝奪DataTables訪問Ajax結果的權限。

您可以改用了dataSrc回調,這需要服務器響應,並必須返回對象數據表使用方法:

dataSrc: function (results) { 
    toastr["success"]("AJAX call succeeded.", "Success:"); 
    var objJSON = $.parseJSON(results.d); 
    return objJSON.data; 
}, 
+0

關於不是壓倒一切的功能 - 感謝。用於調試的回調函數已將其刪除,並按建議添加了dataSrc函數。現在從數據表中獲取「未知參數」錯誤.....我現在可以去調查。 – BBJones