【问题标题】:How to make DataTables work well with a RESTful API如何使 DataTables 与 RESTful API 一起工作
【发布时间】:2014-05-12 11:41:32
【问题描述】:

所以我正在做一个项目,自然我想以网格格式显示信息,经过一整天尝试不同的产品后,我发现了http://datatables.net/api,这真的很容易实现,而且更有意义我比我发现的任何东西都好。问题是我看不到一种简单的方法可以使它与我对服务器的 RESTful 调用一起正常工作。我很有可能只是忽略了文档中的某些内容,但我看不到我在寻找什么。我需要的信息几乎完全在搜索参数中。信息将采用以下格式:

GET COLLECTION ?where=
GET COLLECTION ?include=
GET COLLECTION ?orderby=
GET COLLECTION ?sortby=
GET COLLECTION ?pageIndex=
GET COLLECTION ?limit=
GET COLLECTION ?fields=
GET COLLECTION ?q=

我已经找到了Editable jQuery Grid Recommendations with REST API 的帖子,它解释了如何使用 jqGrid 做类似的事情,但如果可以的话,我宁愿尝试让 Datatables 工作,因为它对我来说更有意义。任何帮助将不胜感激。

编辑

我真正在寻找的,到目前为止,我认为尚未得到解答的是如何确定客户端输入的 URL 以发出请求。例如,如果我有查询:

www.somewebsite.com/v1/people?limit=10&pageIndex=20&orderby=personID

显然,orderby 是 personID,限制是 10,pageIndex 是 20。

问题的关键在于,无论是从服务器还是从服务器,只要数据表发生变化,我都需要 url 采用这种格式,因为我们想要的是只为每个页面提供数据当用户要求时。因此,如果我从服务器收到该请求,我会知道数据表将位于第 3 页,其中 10 个条目按 personID 列排序。您将如何将该信息提供给 dataTables 表,如果它们更改了某些内容,您将如何再次将其恢复(我假设如果您能够回答前者而不是回答后者)?

【问题讨论】:

  • 为了让它更清楚一点,我已经看到你可以找到 pageIndex 和限制绑定到 iDisplayLength 和 iDisplayStart,但我更感兴趣的是找出其他信息,因为它是通常是更重要的东西。
  • 使用“sAjaxSource”,然后使用“url”,但这需要采用特定格式,如果您不想更改 REST 服务的格式,您可以做的另一件事是自己做一个ajax并构建aaData对象
  • 你可能是对的,不幸的是我对 JS 还很陌生,所以我不完全确定我会如何去做。
  • 一旦你对你的休息服务进行了 Ajax 调用,就可以像这个例子中那样构建 aaData jsfiddle.net/j6N7A/1
  • 我已经发布了一个更好的答案,看看它,它可能会帮助你。

标签: jquery rest datatable


【解决方案1】:

在与 Datatables 的创建者进行大量工作后,我发现我想要的大部分内容都已内置到他的应用程序中。具体来说,我需要使用

"bProcessing": true,
"bServerSide": true,
"sAjaxSource": URL,

这是告诉表让服务器执行所有查询的方式。

我有一个或多或少的工作示例http://jsfiddle.net/RM3W2/5/。我所问的核心代码主要在“设置”中。

【讨论】:

  • Randy you api is not working there if you provide sample data from api then it would be more clear.
【解决方案2】:

这样的事情会起作用

HTML

<div class="container">
    <table id="example">
    </table>
</div>

代码

var aaData = [];

    $.ajax({
      url:"your url",
      success:function(data){
        for(i in data){
             aaData.push([data[i].property,data[i].property2,....])
         }

         //Then create the DataTable object
      }

})

使用 $.ajaxaaData 属性的示例 Fiddle

您也可以使用 sAjaxSource 属性,但您需要稍微更改 REST 服务的响应

示例 Fiddle 使用 sAjaxSource

【讨论】:

  • 这看起来像我正在寻找的东西,但是我目前正在做其他事情,所以在我可以测试它之前我会留下这个答案。非常感谢!
  • 所以在再看一遍之后,我仍然不完全确定如何从 URL 中获取查询字符串,所以我将编辑问题以尝试更清楚地说明什么我在找。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
  • 2015-07-31
  • 1970-01-01
  • 2014-02-05
相关资源
最近更新 更多