2012-11-06 40 views
2

我有一个Java Web项目,其中有一个GET端点用于检索JSON数据。萤火显示了我得到的JSON数据的形式尝试将JSON数据插入到数据表部件

[{"id":7,"serial":"7bc530","randomDouble":0.0,"randomDouble2":0.0,"randomDouble3":0.0,"date":1352228474000,"removed":null}, 
{"id":8,"serial":"4a18d27","randomDouble":0.0,"randomDouble2":0.0,"randomDouble3":0.0,"date":1352228474000,"removed":null}, 
{"id":9,"serial":"f30ef","randomDouble":0.0,"randomDouble2":0.0,"randomDouble3":0.0,"date":1352228474000,"removed":null}, 
{"id":10,"serial":"9e6d","randomDouble":0.0,"randomDouble2":0.0,"randomDouble3":0.0,"date":1352228474000,"removed":null}, 
{"id":11,"serial":"4d8665a3","randomDouble":0.0,"randomDouble2":0.0,"randomDouble3":0.0,"date":1352228474000,"removed":null}, 
{"id":12,"serial":"4fe1457","randomDouble":0.0,"randomDouble2":0.0,"randomDouble3":0.0,"date":1352228474000,"removed":null}] 

在HTML方面我都这样了,

<table id="table_id"> 
    <thead> 
     <tr> 
     <th>id</th> 
     <th>serial</th> 
     <th>randomDouble</th> 
     <th>randomDouble2</th> 
     <th>randomDouble3</th> 
     <th>date</th> 
     <th>removed</th> 
     </tr> 
</thead> 
<tbody> 
</tbody> 
</table> 

以下是我对JavaScript的一面,我发现了另一篇文章从别人上这里有适合他们的格式。

$(document).ready(function() { 

    var Table = $("#table_id").dataTable({ 
     "bFilter":false, 
     "bPaginate":false, 
     "bProcessing": true, 
     "bServerSide":true, 
     "bInfo":false, 
     "sAjaxSource": ApiUrl(), 
     "fnServerData": function (sSource, aoData, fnCallback){ 
      $.ajax({ 
      "dataType": 'json', 
       "type": "GET", 
       "url": sSource, 
       "data": aoData, 
       "success": fnCallback 
      }); 
     } 
    }); 

该表正在显示列,但它没有拉入数据。正如我所说的,我确实证实JSON数据通过Firebug发送到网页 - 通过这个GET请求。

我发现数据表是非常混乱,我不能让这个JSON来真正填充...

任何援助将非常感激。

编辑:

我想这一点,

var Table = $("#table_id").dataTable({ 
     "bFilter":false, 
     "bPaginate":false, 
     "bProcessing": true, 
     "bServerSide":true, 
     "bInfo":false, 
     "sAjaxSource": ApiUrl(), 
     "sAjaxDataProp": "" 
    }); 
+0

您可以使用 “sAjaxSource”:把它指向一些的servlet/PHP将发送json数据... – Daniel

+0

问题在于DataTables需要一个带有数据源的名为“aaData”的数组。我无法修改进入的JSON。 – envinyater

+0

比寻找一种方法来包装并将其设置为aaData并将其作为“文本文件”源传递给datables构造函数 – Daniel

回答

1

这应该为服务器端工作:

var Table = $("#table_id").dataTable({ 
    "bFilter":false, 
    "bPaginate":false, 
    "bProcessing": true, 
    "bServerSide":true, 
    "bInfo":false, 
    "aoColumns": [ 
    { "mData": "id" }, 
    { "mData": "serial" }, 
    { "mData": "randomDouble" }, 
    { "mData": "randomDouble2" }, 
    { "mData": "randomDouble3" }, 
    { "mData": "date" }, 
    { "mData": "removed" } 

    ], 
    "sAjaxSource": "url", 
    "fnServerData": function (sSource, aoData, fnCallback) { 
    $.getJSON(sSource, aoData, function (json) { 
     map = {} 
     map["aaData"] = json 
     fnCallback(map) 
    }); 
} 
}); 

更新关于最后的评论:

"fnServerData": function (sSource, aoData, fnCallback) { 
    $.getJSON(sSource, aoData, function (json) { 
     $.getJSON('second_json_url', function(secondjson) { 
      $.each(secondjson, function(index, object) { 
       json[index].serial = secondjson[index].name 
      }) 
      map = {} 
      map["aaData"] = json 
      fnCallback(map) 
     }) 
    }); 
} 
+0

我可能走这条路。有一件事我想做,我想我可以在你的实施中做到这一点。我返回的json(我上面有)包含元素“serial”。我有另一个数组有一个元素名称“串行”,该数组有一个元素“名称”。我需要弄清楚如何从其他数组中引入“名称”,并将其替换为此处的序列。思考? – envinyater

+0

你的意思是你想加载第一个json并将串行列中的值替换为新的json的值? – Smiter

+0

是的,这正是我想要做的,如果可能的话。 – envinyater

1

您可以从任意数据源中读取。查看下面的文档(找到here)。这适用于服务器端处理和ajax数据源。

Additionally, it is possible to set sAjaxDataProp to be an empty string, which results in DataTables treating the given data source as the table data array (rather than as property of an object).

+0

我刚刚尝试过,并未填充数据。 Firebug控制台在Jquery.dataTables.js =/ – envinyater

+0

中有一个“TypeError:aData is undefined”您将无法使用bServerSide,除非您实现服务器端协议http://datatables.net/usage/server-side。你是否试图实现分页/排序/过滤? – barry

+0

我不是。我删除了bServerSide,该错误消失了。不幸的是,我得到了一个新的。弹出一个弹出窗口并显示“DataTables warning(table id ='table_id'):从第0行的数据源请求未知参数'0' – envinyater

相关问题