我正在使用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 ???
});
有什么想法吗?
由于
答案 0 :(得分:2)
您是否尝试过使用store.put({ foo: "bar" }, { id: 3 }).then(function(){});
,store.remove(3).then(function(){});
?查看these docs和this 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用于更新商店。