为什么jQuery DataTables不理解这个基本的JSON数组?

时间:2014-09-20 13:54:35

标签: javascript json jquery-datatables

我正在努力让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还是会照顾它吗?

所以我的问题是,任何人都可以看到我出错的地方吗?

1 个答案:

答案 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 }
    },