1

我正在使用 Dojo JsonREST 存储与服务器上的 RESTful API 进行通信。GET 和 QUERY 方法与异步回调处理程序一起工作得很好。然而,在 JsonREST 存储上发布新对象的 PUT 请求似乎没有异步回调功能。只有当 PUT 请求完成并且成功时,才不可能触发事件。

从文档(http://dojotoolkit.org/reference-guide/1.7/dojo/store/JsonRest.html):

 require(["dojo/store/JsonRest"], function(JsonRestStore){
     var store = new JsonRestStore({target: "/Table/" });

     store.get(3).then(function(object){
        // CALLBACK HERE :-)
     });

     store.query("foo=bar").then(function(results){
       // CALLBACK HERE :-)
     });

     store.put({ foo: "bar" }, { id: 3 }); // NO CALLBACK CAPABILITIES ???

     store.remove(3); // NO CALLBACK CAPABILITIES ???
});

有任何想法吗 ?

谢谢

4

3 回答 3

2

您是否尝试过使用store.put({ foo: "bar" }, { id: 3 }).then(function(){});, store.remove(3).then(function(){});?检查这些文档这篇文章

于 2012-04-30T15:44:01.153 回答
1
put: function(object, options){
    // summary:
    //      Stores an object. This will trigger a PUT request to the server
    //      if the object has an id, otherwise it will trigger a POST request.
    // object: Object
    //      The object to store.
    // options: dojo.store.api.Store.PutDirectives?
    //      Additional metadata for storing the data.  Includes an "id"
    //      property if a specific id is to be used.
    //  returns: Number
      ....
      return xhr( ....);
    }

文档是错误的,return 实际上是一个 dojo.Deferred,正如刚才所说。

期望函数原型读取函数(responseText,ioArgs)

于 2012-04-30T16:35:52.397 回答
0

dojo 文档指出,要添加新项目,您应该使用 POST,因为 PUT 用于更新商店。

于 2013-10-01T01:09:52.317 回答