2012-03-12 9 views
19

Tengo un objeto local formato JSON como esto:¿Cómo puedo utilizar un objeto JSON local como fuente de datos para tablas de datos 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...... 
}] 

me gustaría establecer esto como la fuente de datos para un jQuery datatable y han intentado esto:

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" } 
    ] 
}); 

las tablas de datos plugin de cargas y los intentos de trazar la mesa, pero da el error 'no hay datos disponibles en la tabla'

no estoy haciendo una Llamada AJAX y solo quiere acceder al objeto JSON desde una variable JS local.

+0

¿'console.log (testdata);' le proporciona una cadena o una matriz/objeto? (use 'typeof testdata' si no puede ver la diferencia. –

+0

es una cadena. También he intentado usar $ .parseJSON() en él. – codecowboy

+0

gracias - esto lo ha clasificado. testdata = $ .parseJSON ('{{jobsJSON | raw }} '); – codecowboy

Respuesta

40

La propiedad para abastecer sus propios datos es aaData NO 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

Gracias. Era una combinación de esto y el json no se estaba analizando correctamente: testdata = $ .parseJSON (' {{jobsJSON | raw}} ';; – codecowboy

+0

Sé que esta es una respuesta antigua, pero cómo ¿Puedo mostrar los títulos de las columnas? Actualmente está vacío. ¡Gracias! – Ali

+1

@Ali Agregue un atributo de título después de su mDataProp para establecer los títulos de las columnas. https://stackoverflow.com/a/22486279/119829 – txyoji

1

I encoutered el mismo problema, la solución es la siguiente: Lugar $('#list_table').dataTable código en setTimeout función para posponer la aplicación dataTable durante 5 segundos:

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

Me di cuenta de que aplica el plugin dataTable en Firebug después de que la tabla está cargada, no muestra el error como "No hay datos disponibles en la tabla".

Cuestiones relacionadas