我无法通过dojo 1.8的xhr调用发布dojo表单,但它通过弃用的方法dojo.xhrPost发生。请参阅我使用的代码片段。
这是来自jsp for dojo ajax call
的一部分require(["dojo/request/xhr"],function(xhr){
xhr('http://localhost:8080/myApp/call',{
data: 'callerName',
method:"POST",
load: function(data, ioargs) {
alert("The message is: " + ioargs.xhr.status);
},
error: function(error){
alert("Returned: " + error);
}
});
});
<form data-dojo-type="dijit/form/Form" name="callerName" id="callerName">
...here are dojo input types
</form>
下面是弹簧控制器
@RequestMapping(value="/call",method=RequestMethod.POST)
public ModelAndView saveData3(HttpServletRequest req, @ModelAttribute Caller caller){}
这里我没有从表单到调用者模型属性获取值。但电话正在发生。
,而不是这个ajax调用,如果我去下面的弃用调用,那么值就会被绑定。dojo.xhrPost({
url: 'http://localhost:8080/myApp/call',
form: 'callerName',
load: function(response) {
}
对于1.8中的最新调用而不是参数“数据”,我尝试使用'form'仍然没有发生。这个问题可能是什么?
答案 0 :(得分:3)
道场有deprecated the load
and error
callback attributes in favor of deferreds/promises。
我认为Dojo会保持向后兼容性,直到2.0,但也许它被删除了(啊......如果你需要旧的dojo/_base/xhr
,也许1.8支持旧的语法)。
另外,请注意,最好直接要求dojo/request
而不是dojo/request/xhr
。
更新 为什么dojo/request
优先于dojo/request/xhr
:
dojo/request
是比dojo/request/xhr
更高级别的抽象。所以它是:
dojo/request
自动选择合适的提供商,并在客户端和服务器中均可使用。 dojo/request/xhr
将无法在服务器(node.js)上运行,dojo/request/node
将无法在客户端(浏览器)上运行。dojo/request
可以使用最佳提供程序,而无需对代码进行任何更改。此外,可以根据URL配置提供程序。一个示例用例是针对相同的域请求使用dojo/request/xhr
,针对跨域请求使用dojo/request/script
。来源: