0

我正在写这个很棒的应用程序。这是我第一次尝试编写一个仅在另一侧使用 Restful 存储的单页完全 AJAX 应用程序。

现在...我编写了一些代码,到目前为止,我只需要使用 GET 进行简单的查询。然而,为了保持一切整洁,我确保我有一个“协议”:每个请求都有一个格式为:

{↵ "ack": "ERROR", "message": "required filter not passed",↵ "errors": { "name": "parameter required"↵ } }

万一出现错误(在这种情况下,我要求用户设置过滤器)。

现在......如果 GET确实有效,我还有一个“数据”字段,因此结果如下所示:

{↵ "ack": "OK", "data": { ... } }

现在我遇到了 Dojo 的问题,因为例如 dgrid 期望返回对象的“根”(可以这么说)中的数据,而不是“数据”键。

可能的解决方案:

1)破解我的 JsonRest 文件(它已经有点不同了,我添加了超时等,它毕竟是一个样板),因此,对于“查询”,它实际上使用 then() 操作结果并返回原始数据

2) 更改我的协议,如果 HTTP 状态为 200,并且由于没有错误消息或任何要给出的内容,它只是返回数据

3)以某种方式说服所有小部件在查询后使用返回的 JSON 的“数据”部分中的内容(这似乎不太可能)。

我应该走哪条路?一方面,我喜欢协议始终遵循相同格式的事实(尽管我承认它没用)。另一方面,更改 JsonRest 似乎很容易。但是再一次,第三方 API 可能不喜欢从返回对象的“数据”键中提取数据......

在这里做什么是明智的?

谢谢!

默克。

4

1 回答 1

0

我还没有尝试过,但文档表明如果 JsonRest 查询生成 HTTP 错误代码,xhr 错误对象将一直传递到 dgrid,并且是与dgrid-error事件关联的数据之一。

dgrid 核心组件
dgrid 问题提到查询错误

如果它工作正常,那么我会选择解决方案 2,因为它需要对标准组件的修改最少,并且只使用提供的 API。

于 2012-11-30T09:33:43.627 回答