jQuery DataTable的单个对象

时间:2018-07-18 09:05:27

标签: jquery sql datatables

我在数据库中有一个数据表public TagSuggestBox(TagBox tb, SuggestOracle oracle, ValueBoxBase<String> box, SuggestionDisplay dsd) { super(oracle, box, dsd); this.tagbox = tb; addSelectionHandler(new SelectionHandler<SuggestOracle.Suggestion>() { @Override public void onSelection(SelectionEvent<Suggestion> event) { if (event.getSelectedItem() != null ) { log(event.getSelectedItem().toString()); tagbox.addSuggestion(); ((DefaultSuggestionDisplay) getSuggestionDisplay()).hideSuggestions(); } } public native void log(String message) /*-{ try{ console.log(message); }catch(ex){ } }-*/; }); } ,列为:[CustomerEvent]

我试图只向数据表添加一行(将来可能会更多),但是我不知道该怎么做。

以下ajax请求将输出以下内容:Advices, Transports and Deleted

{Advices: 0, Transports: 1, Deleted: 0}

因此,它肯定会返回正确的信息。但是,如果我想在数据表中查看此信息,则使用以下ajax请求,但找不到任何数据:

$.ajax({
   type: "POST",
   contentType: "application/json; charset=utf-8",
   url: "../json/stats.aspx?t=customer-stats" + "&n=" + caseId
}).done(function (data) {
   console.log(data)

它显示“表中没有可用数据” ,并且不会打印出$("#example").DataTable({ "ajax": { "url": "../json/stats.aspx?t=customer-stats" + "&n=" + caseId, "dataType" : "json", "dataSrc" : "" }, "columns": [ { "data": "Advices" } ] }); 号。 Ajax URL对数据库执行SQL查询,所以也许与"0"有关?另外,我不确定返回的是对象还是json-string。

HTML:

"data"

1 个答案:

答案 0 :(得分:1)

如果要使用从单独的AJAX调用获得的数据加载数据表,请考虑以下事项:

var table = $("#example").DataTable();

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "../json/stats.aspx?t=customer-stats" + "&n=" + caseId
}).done(function (data) {
    //  onsole.log(data)
    //if there is only one data, eg: data = {Advices: 0, Transports: 1, Deleted: 0}
    table.row.add($("<tr><td>"+data.Advices+"</td></tr>")).draw();

    //  if multiple or array, eg: data = [{Advices: 0, Transports: 1, Deleted: 0}, {Advices: 1, Transports: 1, Deleted: 0}, {Advices: 2, Transports: 1, Deleted: 0}];
    //  disable comment to use it :)
    /*for (i in data) {
        table.row.add($("<tr><td>"+data[i].Advices+"</td></tr>")).draw();
    }*/
})

否则,如果您希望数据表从ajax传递数据,那么请考虑在数据表中进行服务器端处理。 检查以下参考: https://datatables.net/examples/data_sources/server_side.html

您必须向数据表选项提供ajax网址

例如:

$('#example').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "../json/stats.aspx?t=customer-stats" + "&n=" + caseId,
        "columns": [
            { "data": "Advices" }
        ]
    } );

您的Ajax页面必须返回如下的json:

{
  "draw": 1,
  "recordsTotal": 1,
  "recordsFiltered": 1,
  "data": [
    [
      "Advice1"
    ]
  ]
}

注意:recordsTotal =>表中的总记录; recordsFiltered =>应用过滤器后获得的总记录