【问题标题】:jQuery DataTables: server-side example with php and xml, no databasejQuery DataTables:带有 php 和 xml 的服务器端示例,没有数据库
【发布时间】:2011-03-18 00:05:00
【问题描述】:

寻找一种方法来设置server-side datatable 使用 PHP 来解析 XML json?

好的,我正在从 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":"contact@email.com","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"}]}

【问题讨论】:

  • 你能告诉我们你到目前为止有什么吗?
  • 所以看起来该特定插件只能处理 HTML 表格或 json 数据。您最好的选择可能是将您的 XML 转换为 HTML 表或 json。这是你卡住的地方吗?
  • 好的,我提供了一个json数据的例子……你能给我一个如何开始的例子吗?

标签: php jquery json datatable datatables


【解决方案1】:

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

因此,一种选择是使用 fnServerData (http://datatables.net/usage/callbacks#fnServerData) 进行自己的 Ajax 调用并获取 XML - 而不是通过简单的循环将其转换为 DataTables 所需的 JSON 格式。

艾伦

【讨论】:

  • json 数据现在在问题的上方。我该如何开始?
【解决方案2】:

感谢您提供示例数据。

您将需要稍微转换数据。

DataTables can take a Javascript data structure (JSON),但它必须是一个数组数组。

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

您只需要该对中的值,而不是键。

此 Javascript 会将您的 Entries 哈希数组转换为普通的旧数组数组。我在这里使用的是 Javascript 1.6 for each ... in 语法,因为我脑子有问题,不记得我们在这里谈论的是 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 选项中,如我在上面提供的链接中所述。 你需要自己弄清楚如何呈现列标题,因为你似乎陷入了无用键名的反模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2011-01-13
    相关资源
    最近更新 更多