jQuery数据表错误地解析json

我只是尝试使用以下json对象查询数据表的示例…

[{"firstName":"pom", "lastName":"sdfpom", "email":null, "password":"cfe9a43acec0a35f903bc2d646ce8e58b5ef6b67", "username":"Dave", "access":null, "id":1}, {"firstName":"FirstName", "lastName":"LastName", "email":null, "password":"8d60258ef3ae1b8eae67e9298f15edf5c6e05dfe", "username":"Username", "access":null, "id":2}] 

这将在下面的变量数据中返回…

  $(document).ready(function() { $.getJSON('userManagement/getAllUsers', function(data) { $('#table').dataTable( { "sAjaxSource": data }); }); });  
firstName lastName email password
Row 1 Data 1 Row 1 Data 2 etc
Row 2 Data 1 Row 2 Data 2 etc

现在JSON似乎是有效的,当我用它做任何其他事情时,例如在jquery中使用它它工作正常,但数据表根本无法正确呈现。 我正在使用的javascript有什么问题吗?

默认情况下,DataTables将为其数据源处理数组数组:当它必须处理对象数组时(如在您的情况下),还有一个额外的步骤。 它在插件文档中的示例中进行了描述。 基本上,您需要做的是添加’column’属性的描述(作为数组):

 $('#table').dataTable({ "aaData": data, "aoColumns": [ { "mData": "firstName" }, { "mData": "lastName" }, { "mData": "email" }, { "mData": "password" }, { "mData": "username" }, { "mData": "access" }, { "mData": "id" } ] }); 

这是小提琴

你的json是数组中的一个对象 ..

所以不要这样

 "sAjaxSource": data 

试试这个

 "sAjaxSource": data[0] 
 $.ajax( { "dataType": 'json', "type": "POST", "url": sSource, "data": aoData, contentType: "application/json; charset=utf-8", async : false, success: function (json) { fnCallback(json); }, complete: function (msg,a,b) { console.log('complete :'+msg) }, error : function(msg,a,b) { console.log('error:'+msg); } } ); 

async:false非常重要。 这将导致在json数据正确绑定之前不呈现页面。

这对我有用。

首先检查您的json是否有效使用www.jsonlint.com。

其次尝试用aaData封装你的JSON对象,如:

 {"aaData" :[{"firstName":"pom","lastName":"sdfpom","email":null, "password":"cfe9a43acec0a35f903bc2d646ce8e58b5ef6b67", "username":"Dave","access":null,"id":1}, {"firstName":"FirstName","lastName":"LastName","email":null, "password":"8d60258ef3ae1b8eae67e9298f15edf5c6e05dfe", "username":"Username","access":null,"id":2}] }