jQuery Datatables-没有为Ajax响应填充表

jQuery Datatables - Table not populated for Ajax response

本文关键字:响应 填充 Ajax Datatables- jQuery      更新时间:2023-09-26

我正在尝试将jquery数据表与服务器端处理集成到一个UI组件中。请求url返回一个json。JSON格式良好,并通过了对jsonint的验证。

下面是从firebug中获取的典型json响应。

{
    "sEcho": 1,
    "iTotalRecords": 6416,
    "iTotalDisplayRecords": 5,
    "aaData": [
        {
            "0": 421367,
            "1": "Test1",
            "2": "NEW",
            "3": "Default",
            "4": "18 Aug 2011 20:27:12 GMT",
            "5": "TestBench",
            "6": "NA"
        },
        {
            "0": 421368,
            "1": "Test2",
            "2": "NEW",
            "3": "Default",
            "4": "18 Aug 2011 20:27:12 GMT",
            "5": "TestBench",
            "6": "NA"
        },
        {
            "0": 421369,
            "1": "Test3",
            "2": "NEW",
            "3": "Default",
            "4": "18 Aug 2011 20:27:12 GMT",
            "5": "TestBench",
            "6": "NA"
        },
        {
            "0": 421370,
            "1": "Test4",
            "2": "NEW",
            "3": "Default",
            "4": "18 Aug 2011 20:27:13 GMT",
            "5": "TestBench",
            "6": "NA"
        },
        {
            "0": 421371,
            "1": "Test5",
            "2": "NEW",
            "3": "Default",
            "4": "18 Aug 2011 20:27:13 GMT",
            "5": "TestBench",
            "6": "NA"
        }
    ]
} 

脚本:

 $(document).ready(function() {
   var thisTable;  
    thisTable = $('#events').dataTable( {
      "bProcessing": true,
      "bServerSide": true,
      "bJQueryUI": true,
      "sPaginationType": "full_numbers",
      "sAjaxSource": "http://localhost:9000/dt/data/all"
    });
  });

我在屏幕上看到处理窗口,它不会停止。桌子还是空的。

我是不是遗漏了什么?

这是个问题吗?因为我一直在看处理窗口。

我也遇到过同样的问题,即处理消息从未停止,但post响应没有任何错误。我已经检查了POST数据,我的错误是在更改页码后,浏览器发送到服务器sEcho=2(如果单击第2页),但我的服务器端代码仍然发送回浏览器sEcho=1,因此导致了错误。我已经从请求参数中获取了正确的sEcho值,并将其放入json响应数据中,现在它工作正常!!

String sEcho=request.getParameter("sEcho");

我认为您的设置需要一个数组数组。你的数据是一个对象数组。所以你必须使用"aoColumns"选项(http://www.datatables.net/release-datatables/examples/ajax/objects.html)

所以我认为应该是这样的:

$(document).ready(function() {
    var thisTable;  
    thisTable = $('#events').dataTable( {
        "bProcessing": true,
        "bServerSide": true,
        "bJQueryUI": true,
        "sPaginationType": "full_numbers",
        "sAjaxSource": "http://localhost:9000/dt/data/all"
        "aoColumns": [
            { "mData": "0" },
            { "mData": "1" },
            { "mData": "2" },
            { "mData": "3" },
            { "mData": "4" },
            { "mData": "5" },
            { "mData": "6" },
        ]
    });
});

这个fiddle似乎对我有用(但我无法测试sAjaxSource属性,因为它需要一个我无法访问的url)http://jsfiddle.net/thomasjonas/jW7uC/1/