Dojo JsonRestStore 的数组不在 JSON 响应的根级别
Dojo JsonRestStore with array not at root-level of JSON response
有没有办法将 JsonRestStore 配置为与返回不在 JSON 响应根级别的对象数组的现有 Web 服务一起使用?
我的 JSON 响应目前类似于以下内容:
{
message: "",
success: true,
data: [
{ name: "Bugs Bunny", id: 1 },
{ name: "Daffy Duck", id: 2 }
],
total: 2
}
我需要告诉 JsonRestStore 它会在"data"下找到行,但我通过查看文档看不到这样做的方法。模式似乎是一种可能性,但我无法通过文档(或我在 Google 中找到的内容)来理解它。
我的 Web 服务以 Ext JS 中存储所期望的格式返回数据,但我现在无法重构多年的 Web 服务(通过 HTTP 标头而不是查询字符串值处理分页也可能很有趣,但这是另一天的问题)。
谢谢。
虽然它在 API 文档中几乎没有被提及,但dojox/data/JsonRestStore
中有一个名为 _processResults
的内部方法恰好可以为此目的轻松覆盖。 它接收服务返回的数据和请求中的原始延迟,并期望返回包含items
和totalCount
的对象。
根据上面的数据,这样的事情应该有效:
var CustomRestStore = declare(JsonRestStore, {
_processResults: function (results) {
return {
items: results.data,
totalCount: results.total
};
}
});
dojo/store 的想法是提供参考存储,但它们旨在自定义以匹配您想要的任何数据格式。例如,https://github.com/sitepen/dojo-smore 有一些额外的存储(例如,处理 Csv 数据的存储)。这些存储为如何处理在不同结构下提供的数据提供了很好的示例。
还有新的dstore项目 http://dstorejs.io/,它最终将取代Dojo 2中的dojo/store,但今天与Dojo 1.x对抗。这对于创建自定义存储以匹配您的数据结构可能更容易。
相关文章:
- http请求使用html而不是json进行响应
- 在不同的javascript数组中对json响应进行排序
- Laravel数据表无效的JSON响应
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 使用来自不同异步函数的响应创建一个json对象
- 无法访问响应 JSON 对象
- 使用 RESTful API,如果未定义特定的响应 json 级别,我如何在客户端不出错
- 使用官方 Node.js SendGrid API 发送电子邮件时,响应 JSON 中可能出现哪些错误消息
- 无法从响应 JSON 中删除 html 标记
- 当响应 JSON 对象数据计数为零时,AJAX 成功回调函数重定向到错误回调
- 拆分 AJAX 响应 (JSON)
- jquery ajax 响应中缺少响应 JSON
- AJAX返回200成功,但未能解析响应JSON
- 向声音云响应json添加一个变量
- Node.js请求-Can't获取REST响应(JSON)的属性
- 如何使用javascript在for循环中获取响应json数据
- 下拉列表中未设置 AJAX 响应 JSON 数据
- Fetch api,为什么我必须在响应json()上使用它,试图让承诺有意义
- 如何使用ajax响应JSON数据
- 响应.json() 上的“意外输出结束”错误