2011-12-29 38 views
5

Trong jquery Datatables là nó có thể xác định các cột với một kịch bản phía máy chủ? Tôi cần một cái gì đó như thế này enter image description herejquery datatables - lấy các cột từ json

Các cột có ngày phải được tải từ máy chủ. Sau đó, số cột có thể khác nhau.

+1

Tại sao bạn không nhận dữ liệu hoàn chỉnh bằng JSON và sau đó tạo bảng HTML mà bạn có thể hiển thị cho người dùng – Moons

+0

Tôi không hiểu ý bạn là gì bằng cách tạo bảng HTML. Tạo bằng Javascript? – mik

+0

khi bạn nhận được JSON sau đó bạn có thể phân tích cú pháp bằng cách sử dụng JSON.parse và sau đó bạn có thể lặp lại các đối tượng để tạo một bảng HTML bằng cách sử dụng JQuery – Moons

Trả lời

5

Để mở rộng về những gì Kamal Sâu Singh đã nói:

Bạn tự động có thể tạo ra bàn một cách nhanh chóng, sau đó áp dụng datatables với nó để có được chức năng datatables'.

// up in the html 
<table id="myDatatable" class="... whatever you need..."></table> 

và sau đó:

// in the javascript, where you would ordinarily initialize the datatable 
var newTable = '<thead><tr>'; // start building a new table contents 

// then call the data using .ajax() 
$.ajax({ 
    url: "http://my.data.source.com", 
    data: {}, // data, if any, to send to server 
    success: function(data) { 
     // below use the first row to grab all the column names and set them in <th>s 
     $.each(data[0], function(key, value) { 
      newTable += "<th>" + key + "</th>"; 
     }); 
     newTable += "</tr></thead><tbody>";     

     // then load the data into the table 
     $.each(data, function(key, row) { 
      newTable += "<tr>"; 
       $.each(row, function(key, fieldValue) { 
        newTable += "<td>" + fieldValue + "</td>"; 
       }); 
      newTable += "</tr>"; 
     }); 
     newTable += '<tbody>'; 

     $('#myDatatable').html(newTable); // replace the guts of the datatable's table placeholder with the stuff we just created. 
    } 
}); 

// Now that our table has been created, Datatables-ize it 
$('#myDatatable').dataTable(); 

Lưu ý bạn có thể đặt thiết lập trong .dataTable rằng() như bình thường, tuy nhiên, không phải là 'sAjaxSource' hoặc bất kỳ của các chức năng dữ liệu nhận được liên quan - đây là áp dụng datatables cho một bảng đã tồn tại, một bảng chúng ta đã tạo ra khi đang bay.

Ok, do đó, đó là một cách hacky để làm điều đó, nhưng nó sẽ hoạt động.

Hiện không có phương pháp tích hợp sẵn để thực hiện việc này với dữ liệu động. Xem ở đây: https://github.com/DataTables/DataTables/issues/273

+0

Cảm ơn, nhưng tôi đã tìm kiếm một cách thuận tiện hơn, tương tự như "sAjaxSource": "scripts/server_processing.php" – mik

5

Tôi nghĩ rằng tôi đã tìm thấy những gì bạn đang tìm kiếm

tôi sẽ dán một số mã + gửi một liên kết đến một Q tương tự' trong đó bạn sẽ nhận được thông tin nhiều hơn nữa ...

$.ajax({ 
    "url": 'whatever.php', 
    "success": function (json) { 
     json.bDestroy = true; 
     $('#example').dataTable(json); 
    }, 
    "dataType": "json" 
}); 

nơi json là một cái gì đó như thế này

{ 

"aaData": [ 
[ "2010-07-27 10:43:08", "..."], [ "2010-06-28 17:54:33", "..."], 
[ "2010-06-28 16:09:06", "..."], [ "2010-06-09 19:15:00", "..."] 
] , 

"aaSorting": [ 
    [ 1, "desc" ] 
], 

"aoColumns": [ 
    { "sTitle": "Title1" }, 
    { "sTitle": "Title2" } 
] 

} 

đây một liên kết đến các chủ đề ban đầu

0.123.

Column definition via JSON array (ajax)

Các vấn đề liên quan