我正在努力让jQuery Datatables与一个非常简单的json数组一起工作。在我看来,输出json匹配datatables站点上的简单ajax示例:
"{\"data\":[[\"Row1\",\"0\",\"1\",\"1\",\"2\",\"6\",\"0\",\"1\"],[\"Row2\",\"16\",\"11\",\"13\",\"13\",\"16\",\"2\",\"5\"],[\"Row3\",\"0\",\"1\",\"1\",\"0\",\"1\",\"0\",\"0\"],[\"Row4\",\"14\",\"8\",\"19\",\"16\",\"24\",\"3\",\"0\"],[\"Row5\",\"4\",\"0\",\"2\",\"1\",\"2\",\"2\",\"1\"]]}"
唯一的区别是我的api的输出被转义,我无法真正帮助它,因为它是由JSON.NET生成的。在chrome中调试数据表时,我得到一个'未捕获的TypeError:无法读取未定义'异常的属性'长度。
这是我的HTML / JavaScript:
<script type="text/javascript">
$(document).ready(function() {
$('#incVolumes').dataTable( {
"ajax":"http://localhost/API/Reporting/Volumes"
} );
} );
</script>
<table id="incVolumes" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Worksource</th>
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
<th>Col4</th>
<th>Col5</th>
<th>Col6</th>
<th>Col7</th>
</tr>
</thead>
</table>
我通常不得不使用Json.Parse将这样的东西传递给jQuery插件,但据我所知,datatables还是会照顾它吗?
所以我的问题是,任何人都可以看到我出错的地方吗?
答案 0 :(得分:1)
数据表不理解输出的原因是生成的json是一个json字符串,与json对象的集合相对应。 Json.NET不会导致此问题,而是从MVC控制器返回json的结果。
该问题的解决方案是在数据表的dataSrc属性中使用JSON.parse,如下所示:
$('#incVolumes').dataTable( {
"ajax": {
"url": "http://localhost/IceMin/IMReporting/Volumes",
dataSrc: function(json) { var parsedData = JSON.parse(json); return parsedData.data }
},