2011-03-18 13 views
0

寻找一种方法来设置一个server-side datatable使用PHP来解析 XML json?jQuery DataTables:服务器端的例子与PHP和XML,没有数据库

好吧,我从wufoo获得数据,所以我也能够拉动json。我如何开始使用以下数据?

{"Entries":[{"EntryId":"33","Field71":"","Field41":"John","Field42":"Smith","Field55":"","Field34":"2004","Field375":"Arts, Design, Entertainment, Sports and Media","Field378":"Select One","Field4":"Kayak Outfitter","Field3":"Kayak Tours, Inc","Field7":"123 Main Street","Field8":"","Field9":"New York","Field10":"New York","Field11":"54209","Field12":"United States","Field19":"(555)555-5555","Field23":"[email protected]","Field46":"http:\/\/www.website.com","Field21":"","Field49":"","Field6":"May>September","Field65":"","Field69":"","Field25":"","Field37":"Its all about Self-Motivation.","Field30":"Yes","Field31":"Yes","Field172":"","Field39":"","DateCreated":"2009-01-30 05:46:02","CreatedBy":"public","DateUpdated":"2010-08-08 22:23:30","UpdatedBy":"User"}]} 
+0

你能告诉我们你到目前为止,请吗? – Charles 2011-03-18 00:07:33

+0

只是在这个页面上的代码... http://www.datatables.net/examples/server_side/server_side.html – Jeffrey 2011-03-18 01:00:59

+0

因此,它看起来像那个特定的插件可以*只能*与HTML表或JSON数据工作。你最好的选择可能是将你的XML转换成HTML表格或json。这是你卡住的地方吗? – Charles 2011-03-18 01:39:14

回答

0

正如Charles建议DataTables目前只接受具有特定格式的JSON输入。原因是支持抽象格式会给内部和初始化增加很多开销(即你需要告诉它你希望它使用// articles/book @ author或其他)。

因此,一种选择是使用fnServerData(http://datatables.net/usage/callbacks#fnServerData)来创建自己的Ajax调用并获取XML,而不是将其转换为DataTable需要的JSON格式,并使用简单的循环。

艾伦

+0

json数据现在位于问题的上方。我如何开始? – Jeffrey 2011-03-18 18:29:45

0

感谢您的示例数据。

您将需要稍微转换数据。

DataTables can take a Javascript data structure (JSON),但它必须是阵列阵列

您的示例数据具有一个名为Entries的根元素,其中包含一个数组。那很棒。不幸的是,该数组中的每个元素都是散列 - 键/值对。

您只需要来自该对的值,而不是密钥。

这个Javascript会将您的Entries散列数组转换为普通的旧数组数组。我在这里使用Javascript 1.6 for each ... in语法,因为我有一个brainfart,并不记得我们在这里讨论的是一个jQuery插件,并且没有这个依赖关系写它。

var entries = /* JSON as provided in question */; 
var new_array = new Array(); 
var el = entries['Entries'].length; 
for(i = 0; i < el; i++) { 
    var inner_array = new Array(); 
    for each (var value in entries['Entries'][i]) { 
     inner_array[ inner_array.length ] = value; 
    } 
    new_array[ new_array.length ] = inner_array; 
} 

然后,您可以通过new_array到初始散列的选项aaData选项,如我上面提供的链接记录。 由于您似乎陷入了无用键名称的反模式,因此您需要制定如何自己展示列标题

相关问题