如何解析从Datatables ajax调用接收到的JSON?

10

我可以通过ajax调用成功地填充我的数据表,但我不知道如何解析由这个ajax调用接收到的JSON。

这是我的JavaScript代码,它向服务器发起ajax调用,并正确地填充了我的数据表:

$('#transactions').DataTable({
        "processing": true,
        "ajax": {
            "url": "/transactions
        },
        "columns": [
            { "data": "car"},
            { "data": "card_number"},
            { "data": "invoice"},
            { "data": "status"}
        ]
    });

这是从服务器返回的JSON对象:

{
  "data": [
    {
      "car": 190,
      "card_number": "6395637",
      "invoice": 200,
      "status": "success"
    },
    {
      "car": 191,
      "card_number": "9473650",
      "invoice": 180,
      "status": "success"
    }
  ],
  "balance": 7300
}

正如您所看到的,返回的JSON对象的data参数被datatables函数用于填充datatables,现在我想解析balance参数,但我不知道该怎么做。我该如何实现?


我在原始帖子中描述了这个JSON是由服务器返回的,并填充到数据表中,我想将这个JSON的余额参数分配给一些Javascript变量(即解析它)。 - gdrt
3个回答

29

像这样:

$('#transactions').dataTable({
    "ajax" : {
        "url" : "/transactions",
        "dataSrc" : function (json) {
            // manipulate your data (json)
            ...

            // return the data that DataTables is to use to draw the table
            return json.data;
        }
    }
});

文档:https://datatables.net/reference/option/ajax.dataSrc


谢谢你们,你们的回答非常棒! - gdrt

6
不要使用DataTable的url功能,自己进行Ajax调用。
$.getJSON('/transactions', function(response) {
  $('#transactions').dataTable({
    processing: true,
    data: response.data,
    columns: [
      { data: "car"},
      { data: "card_number"},
      { data: "invoice"},
      { data: "status"}
    ]
  });
  window.someGlobalOrWhatever = response.balance
});

1
自DataTables 1.10起,您可以使用ajax.json()函数:https://datatables.net/reference/api/ajax.json() 我已在下面的示例代码中实现了它。
$( document ).ready(function() {
  $('#search-form').submit(function(e) {
    e.preventDefault();
    var table = $('#location-table').DataTable({
      destroy: true,
      ajax: "/locations.json",
      columns: [
        { "data": "code" },
        { "data": "status" },
        { "data": "name" },
        { "data": "region" },
        { "data": "address" },
        { "data": "city" },
        { "data": "state" },
        { "data": "zip" },
        { "data": "phone_number" },
      ]
    })
  table.on( 'xhr', function () {
    var json = table.ajax.json();
    $('#totals').text(json.totals)
  });
  })
});

请注意,要使此功能正常工作,您必须使用$('#location-table').DataTable()而不是$('#location-table').dataTable来初始化数据表(区别在于字母D的大小写)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接