如何从JSON响应创建Dojo存储

时间:2013-12-16 10:25:19

标签: javascript json rest dojo dgrid

我是Dojo Frame工作的新手,所以请耐心等待我。 我有一个服务实现,它将返回JSON响应。 我正在使用Dojo框架工作UI。我不确定请求服务器并在dojo中获取响应的正确方法。

我找到了3种请求服务器和接收响应的方法。不确定它是否错误甚至是远程正确

1)

request(contextName+"/service/getquestions/projectId/"+projectId,{
                    handleAs: "json"
                    }).then(function(data){alert("something")});

2)

var questionAnswerStore = new JsonRest({
                        target: contextName+"/service/getquestions/projectId/"+projectId,
                                       });

3)

request.get("contextName+"/service/getquestions/projectId/"+projectId",{
    handleAs: "json"
}).then(function(data){
    dataStore = new ObjectStore({ objectStore:new Memory({ data: data.items }) });
        });

此外,创建的商店将用于填充dgrid元素。 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

使用小部件时,您应该将数据包装在dojo/store中。这就省去了你的第一种方法。

第二个,就像@PaulR告诉你的那样,是最好的方法。但这也意味着您的REST服务应该遵循您可以在reference guide找到的某些规则。 如果您不能满足这些标准,您可以选择扩展dojo/store/JsonRest模块以使其符合要求或使用第三种方法。

如果您的REST服务不符合要求,第三种方法可能是最简单的方法。您不需要在新版本的Dojo中使用dojo/data/ObjectStore适配器,因为所有小部件商店现在应该使用dojo/store API(而不是旧的dojo/data API)。

答案 1 :(得分:0)

第二种方式是“最好的”; Dojo是modeled on用于检索和操作(服务器端)数据的Store接口。 其他方式可能没有错,但不是使用REST接口的“Dojo方式”。

目标参数应包含其余端点(/ service / getquestions / projectId)。当您想要检索特定项目的信息时,您可以在商店中调用store.get(projectId),然后对/ service / getquestions / projectId / projectid执行GET请求并返回相应的数据。

同样可以通过调用store.put(object)来完成更新,这将在/ service / getquestions / projectId / projectid上执行PUT请求。

希望这会有所帮助。如果没有,可以找到有关商店的更多信息here

相关问题