我正在使用Dojo JsonREST存储与服务器上的RESTful API进行通信。 GET和QUERY方法工作得很好,使用异步回调处理程序。但是,在JsonREST存储上发布新对象的PUT请求似乎没有异步回调功能。然后只有在PUT请求完成并且成功的情况下才能发起事件。Dojo:如何使用回调方法在jsonRest存储上创建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 ???
});
任何想法?
感谢
你说得对。查看源代码可以发现返回的对象是Deferred。然而,一个错误(应该在Dojo 1.8中修复)使得无法取回标题响应,如下所示:'store.put({foo:“bar”},{id:3})。then(function(消息,ioArgs){});'在这里,'ioArgs'将是未定义的。 –
var deferred = put(item);会返回延迟对象,然后你可以添加一个回调函数,并访问ioArgs中的xhr对象,如下所示:def.addCallback(function(mess,io){console.log(io); console.log(mess); console.log(def.ioArgs.xhr.getAllResponseHeaders()); }); –