2015-05-14 64 views
0

我有一個jQuery數據表細節初始化的問題。 我需要在加載頁面後獲取已打開的詳細信息表。有沒有什麼辦法來初始化jQuery數據表中的細節?

我有下面的代碼:

function format(d) { 
    return d; 
    } 
    $(document).ready(function() { 

    $.ajax({ 
     type: "GET", 
     dataType: "json", 
     url: "/SHOP/Promotions/GenerateDetailsToJson", //teraz w tym miejscu inicjuję dane do tabel 
     success: function (result) { 
      SetDetails(result); 
     }, 
     error: function() { 
      alert("Wystąpił nieoczekiwany błąd"); 
     } 
    }) 

    dt = $('#table').DataTable(
     { 
      "aoColumnDefs": [ 
     { 'bSortable': false, 'aTargets': [0, 6, 7] } 
      ] 
     } 
     ); 
     dt.on('draw', function() { 
     $.each(detailRows, function (i, id) { 
      $('#' + id + ' td:first-child').trigger('click'); 
     }); 
    }); 

    $('#table').DataTable();} 

    var table_length = $('#table tbody tr').length; //HERE iS PROBLEM 

    var tr = document.getElementsByClassName("details"); 

    for (var i = 0; i < table_length; i++) { 
     var row = dt.row(tr[i]); 
     row.child(format(details[i])).show(); 
    } 
    ); 

的問題是在上面的代碼中最後幾行。 這些行需要初始化並打開所有jquery數據表詳細信息,但這些函數不會在時間執行,也不會顯示任何內容。 我已經嘗試使用超時它更好地工作,但不像想要的那樣,對於幾個更新一個沒有數據 如果你知道任何解決方案,請幫助。

+0

你的鱈魚嗎?甚至工作? '$('#table').DataTable();}'''''在這裏做什麼? – sigod

回答

0

您必須等待ajax請求完成。

例如:

$(document).ready(function() { 
    $.ajax({ 
     //... 
     success: function (result) { 
      SetDetails(result); 
      process(); 
     } 
    }); 

    function process() { 
     var table_length = $('#table tbody tr').length; 

     var tr = document.getElementsByClassName("details"); 

     for (var i = 0; i < table_length; i++) { 
      var row = dt.row(tr[i]); 
      row.child(format(details[i])).show(); 
     } 
    } 
}); 
+0

我做了類似的東西,所有的表初始化和它的工作 –

0

1:嘗試數據表代碼之前移除所述AJAX調用(也許有在AJAX調用一些誤差,這導致它下面的代碼的非工作)

2 :在ajax調用中,我認爲url是錯誤的。

3:有沒有功能目前setdetails,如果它不存在,那麼代碼將給出錯誤

4:嘗試在Firefox瀏覽器中運行的代碼(與螢火蟲),嘗試谷歌搜索關於螢火蟲如果u做不知道這件事情,但它建議使用螢火蟲(非常有用)

+0

我已經找到了問題的解決方案,謝謝你。 我只在文檔準備就緒時執行ajax調用,並在ajax成功執行之前有問題的函數 –

0

嘗試使用$.when.then,這樣就可以等待你的Ajax獲得完整的,然後執行剩餘的初始化如下:

$.when(
$.ajax({ 
     .... 
     .... 
})).then(function() 
{ 
    dt = $('#table').DataTable(
     .... 
     .... 
    }); 
    //Other initializations. 
}); 
相關問題