2012-03-12 23 views
19

Tôi có một đối tượng JSON địa phương được định dạng như thế này:Làm thế nào tôi có thể sử dụng một đối tượng JSON địa phương như là một nguồn dữ liệu cho DataTables jQuery

[{ 
    "id": "58", 
    "country_code": "UK", 
    "title": "Legal Director", 
    "pubdate": "2012-03-08 00:00:00", 
    "url": "http://..." 
},{ 
    "id": "59", 
    "country_code": "UK", 
    "title": "Solutions Architect,", 
    "pubdate": "2012-02-23 00:00:00", 
    "url": "http://..." 
},{ 
    // ....more of the same...... 
}] 

Tôi muốn thiết lập này làm nguồn dữ liệu cho một jQuery datatable và đã cố gắng này:

testdata = '{{ jobsJSON | raw }}'; //twig template tag 
console.log(testdata); 
$('#test').dataTable({ 
    "aoData": testdata, 
    "aoColumns": [ 
     { "mDataProp": "id" }, 
     { "mDataProp": "country_code" }, 
     { "mDataProp": "title" }, 
     { "mDataProp": "pubdate" }, 
     { "mDataProp": "url" } 
    ] 
}); 

các DataTables cắm tải và cố gắng để vẽ bảng, nhưng cung cấp cho các lỗi 'không có dữ liệu trong bảng'

tôi không làm một Gọi AJAX và chỉ muốn truy cập đối tượng JSON từ một biến JS cục bộ.

+0

'console.log (testdata);' cung cấp cho bạn một chuỗi hoặc một mảng/đối tượng? (sử dụng 'typeof testdata' nếu bạn không thể biết được sự khác biệt. –

+0

một chuỗi của nó. Tôi cũng đã cố gắng sử dụng $ .parseJSON() trên đó – codecowboy

+0

cảm ơn - điều này đã sắp xếp nó testdata = $ .parseJSON ('{{jobsJSON | raw }} '); – codecowboy

Trả lời

40

Khách sạn cung cấp dữ liệu của riêng bạn là aaData KHÔNG aoData:

testdata = [{"id":"58",...}]; // local object 

$('#test').dataTable({ 
    "aaData": testdata, 
    "aoColumns": [ 
     { "mDataProp": "id" }, 
     { "mDataProp": "country_code" }, 
     { "mDataProp": "title" }, 
     { "mDataProp": "pubdate" }, 
     { "mDataProp": "url" } 
    ] 
}); 

Working fiddle

+2

Cảm ơn. Đó là sự kết hợp của điều này và json không được phân tích cú pháp chính xác: testdata = $ .parseJSON (' {{jobsJSON | raw}} '); – codecowboy

+0

Tôi biết đây là câu trả lời cũ nhưng cách Làm cách nào để hiển thị tiêu đề cột? Hiện tại, sản phẩm này trống. Cảm ơn! – Ali

+1

@Ali Thêm thuộc tính tiêu đề sau mDataProp của bạn để đặt tiêu đề cột. https://stackoverflow.com/a/22486279/119829 – txyoji

1

Tôi vải trên thị trường cùng một vấn đề, giải pháp là như thế này: Nơi $('#list_table').dataTable mã trong setTimeout chức năng hoãn ứng dụng DataTable trong 5 giây:

setTimeout("$('#list_table').dataTable ...." , 5000); 

Tôi nhận thấy rằng áp dụng plugin dataTable trong firebug sau khi bảng được tải, nó không hiển thị lỗi là "Không có dữ liệu có sẵn trong bảng".

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