DataTables警告:表id = example-从服务器分页时无效的JSON响应

时间:2019-02-18 10:26:29

标签: ajax datatables

这是我的桌子

<table id="example" class="display" style="width: 100%">
            <thead>
                <tr>
                    <th>latitude</th>
                    <th>longitude</th>
                </tr>
            </thead>
            <tfoot>
                <tr>
                    <th>latitude</th>
                    <th>longitude</th>
                </tr>
            </tfoot>
        </table>

这是我的剧本

 <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet" />
<script>
    $(document).ready(function () {
        $(document).ready(function () {
            $('#example').DataTable({
                "processing": true,
                "serverSide": true,
                "info": true,
                "stateSave": true,
                "lengthMenu": [[10, 20, 50, -1], [10, 20, 50, "All"]],
                "ajax": {
                    "url": "Default3.aspx/GetRouteName",
                    "type": "GET"
                },
                "columns": [
                    { "data": "latitude" },
                   { "data": "longitude" }
                ],
                "order": [[0, "asc"]]
            });
        });
    });
</script>

在页面末尾,我正在加载以下脚本

<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>

这是我的服务器

 [WebMethod]
public static string GetRouteName()
{
    List<location> b = new List<location>();
    for (int i = 0; i < 1000; i++)
    {
        location l = new location();
        l.latitude = 1233;
        l.longitude = 123123;
        b.Add(l);
    }
    bise bb = new bise();
    bb.data = b;
    bb.draw = 3;
    bb.recordsFiltered = 1000;
    bb.recordsTotal = 1000;
    return JsonConvert.SerializeObject(bb);
}

我不断得到DataTables warning: table id=example - Invalid JSON response我已经尝试了很多次周转,但是同样的问题,我需要的是能够从服务器上分页数据表,因为我有大数据,但是ajax调用甚至没有触发,请参考此链接datatable from server

2 个答案:

答案 0 :(得分:0)

[WebMethod]
public static string GetRouteName()
{
    List<location> b = new List<location>();
    for (int i = 0; i < 1000; i++)
    {
        location l = new location();
        l.latitude = 1233;
        l.longitude = 123123;
        b.Add(l);
    }

    return JsonConvert.SerializeObject(b);
} 

您可以试试吗?工作正常吗?

答案 1 :(得分:0)

我对.NET不熟悉,但我建议您以这种方式简单地遵循所需的格式(这是服务器端的伪代码,请随时将其翻译为所需的任何语言):

function GetRouteName() // returns an object
{
    Array b = new Array();
    for (int i = 0; i < 1000; i++)
    {
        Array l = new Array();
        l.latitude = 1233;
        l.longitude = 123123;
        b["data"].Add(l); // Add the longitude/latitude array to a data field of the returned array
    }
    return JsonConvert.SerializeObject(b); // return the array b after converting it to json
}

请记住,您返回的json需要看起来像这样:

{
  "data": [
    {
      "longitude": "123",
      "latitude": "123123"
    },
    {
      "longitude": "123",
      "latitude": "123123"
    },
    {
      "longitude": "123",
      "latitude": "123123"
    }
  ]
}

它必须是一个包含data的对象,并且内部必须有多个具有适当参数的键longitudelatitude作为对象。