Dojo:如何使用回调方法在jsonRest存储上发出PUT请求

时间:2012-04-30 14:58:07

标签: javascript json rest dojo

我正在使用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 ???
});

有什么想法吗?

由于

3 个答案:

答案 0 :(得分:2)

您是否尝试过使用store.put({ foo: "bar" }, { id: 3 }).then(function(){});store.remove(3).then(function(){});?查看these docsthis post

答案 1 :(得分: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( ....);
    }

文档是错误的,返回实际上是一个dojo.Deferred就是刚刚陈述的。

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

答案 2 :(得分:0)

dojo文档声明,为了添加新项目,您应该使用POST,因为PUT用于更新商店。