Javascript 如何从JSON响应创建Dojo存储

Javascript 如何从JSON响应创建Dojo存储,javascript,json,rest,dojo,dgrid,Javascript,Json,Rest,Dojo,Dgrid,我是刚接触Dojo框架的人,所以请务必容忍我。 我以返回JSON响应的方式实现了一个服务。 我正在为UI使用Dojo框架。我不确定在dojo中请求服务器并获得响应的正确方法 我找到了3种向服务器请求并接收响应的方法。我不确定这是错误的还是正确的 (一) (二) (三) 此外,创建的存储将用于填充dgrid元素。 感谢您的帮助 第二种方法是“最佳”方法;Dojo是用于检索和操作(服务器端)数据的存储接口。 其他方法可能没有错,但不是使用REST接口的“Dojo方法” 目标参数应该包含rest端点(

我是刚接触Dojo框架的人,所以请务必容忍我。 我以返回JSON响应的方式实现了一个服务。 我正在为UI使用Dojo框架。我不确定在dojo中请求服务器并获得响应的正确方法

我找到了3种向服务器请求并接收响应的方法。我不确定这是错误的还是正确的

(一)

(二)

(三)

此外,创建的存储将用于填充dgrid元素。 感谢您的帮助

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

目标参数应该包含rest端点(/service/getquestions/projectId)。当您想要检索特定项目的信息时,您可以在存储区上调用store.get(projectd),该存储区将执行对/service/getquestions/projectd/projectd的get请求,并返回相应的数据

同样,可以通过调用store.put(object)来完成更新,这将对/service/getquestions/projectd/projectd执行put请求


希望这有帮助。如果没有,可以找到有关存储的更多信息。

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

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


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

Thanx buddy。为了明确上下文,我只是开发了一个HTML页面,它将使用resposne填充网格。但是当我在snipplte中使用第二个方法时,它在我的chrome控制台中得到了一个错误“UncaughtTypeError:object不是函数”。这是一个常见的javascript错误,但我无法找出原因。函数中包含了JsonRest。此外,除了“target”之外,JsonRest构造函数中是否还包含任何其他额外属性?是否使用用于开发的?这确实有助于跟踪这样的错误。是@PaulR,使用dojo-release-1.9.2,但错误仍然存在。通过使用{new dojo.store.JsonRest}而不仅仅是{new JsonRest}解决了这个问题。尽管如此,我在require和immediate函数中都指定了它。现在我有了新的问题。“contextName”被附加到目标URL中两次。参数“projectId”也被附加了两次。我试着一个接一个地把它们去掉。当我删除“contextName”时,它就不见了。但是当我删除“projectId”时,一个值“1”会自动追加到末尾。我是否应该遵循任何特定的语法来为URL指定这些上下文名称和参数?Thanx buddy。为了明确上下文,我只是开发了一个HTML页面,它将使用resposne填充网格。但是当我在snipplte中使用第二个方法时,它在我的chrome控制台中得到了一个错误“UncaughtTypeError:object不是函数”。这是一个常见的javascript错误,但我无法找出原因。函数中包含了JsonRest。还有,除了“target”之外,JsonRest构造函数中还有其他属性吗?还有一件事我想问一下,只需在JsonRest的target属性中给出完整的请求URL,我是否能够获得可以用作require方法中声明的普通数据存储的存储?根据文档,具有target属性的对象应该足够了。但是,如果您的唯一目的是呈现数据(无插入/更新/删除),我认为第三种方法对您来说会更容易。
request(contextName+"/service/getquestions/projectId/"+projectId,{
                    handleAs: "json"
                    }).then(function(data){alert("something")});
var questionAnswerStore = new JsonRest({
                        target: contextName+"/service/getquestions/projectId/"+projectId,
                                       });
request.get("contextName+"/service/getquestions/projectId/"+projectId",{
    handleAs: "json"
}).then(function(data){
    dataStore = new ObjectStore({ objectStore:new Memory({ data: data.items }) });
        });