我无法通过 dojo 1.8 的 xhr 调用发布 dojo 表单,但它是通过已弃用的方法 dojo.xhrPost 发布的。请查看我使用的代码片段。
这是 jsp 中用于 dojo ajax 调用的部分
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>
下面是 Spring Controller
@RequestMapping(value="/call",method=RequestMethod.POST)
public ModelAndView saveData3(HttpServletRequest req, @ModelAttribute Caller caller){}
这里我没有获取从表单到调用者模型属性的值。但电话正在发生。 如果我不推荐使用下面的调用,而不是这个 ajax 调用,值将被绑定(bind)。
dojo.xhrPost({
url: 'http://localhost:8080/myApp/call',
form: 'callerName',
load: function(response) {
}
对于 1.8 中的最新调用而不是参数“数据”,我尝试使用“表单”仍然没有发生。这可能是什么问题?
最佳答案
Dojo 有 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
处理跨域请求。
来源:
关于spring-mvc - 使用 xhr post 和 json 的 dojo ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12616533/