使用xhr-post和json的dojoajax调用



我无法通过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>

下面是弹簧控制器

@RequestMapping(value="/call",method=RequestMethod.POST)
public ModelAndView saveData3(HttpServletRequest req, @ModelAttribute Caller    caller){}

在这里,我没有获取从表单到调用方模型属性的值。但电话正在打来。如果我选择下面不推荐使用的调用a,则不使用此ajax调用,而是绑定了值。

dojo.xhrPost({
url: 'http://localhost:8080/myApp/call',
form: 'callerName',
load: function(response) {
}

对于1.8中的最新调用,而不是参数"data",我尝试了"form"仍然没有发生。这个问题可能是什么?

Dojo已弃用loaderror回调属性,转而支持deferreds/promise。
  • 带有延迟的新代码的示例代码位于带有回调的旧代码之下
  • 另一个样本

我原以为Dojo会在2.0之前保持向后兼容性,但也许它被删除了(啊……如果您需要旧的dojo/_base/xhr,也许1.8支持旧的语法)。

此外,请注意,最好使用dojo/request,而不是直接使用dojo/request/xhr

更新:为什么dojo/request优于dojo/request/xhr

CCD_ 8是比CCD_ 9更高级别的抽象。因此:

  • 更具可移植性:dojo/request自动选择合适的提供程序,并在客户端和服务器中工作。dojo/request/xhr将无法在服务器(node.js)上工作,dojo/request/node将无法在客户端(浏览器)上工作
  • 更灵活。在未来,也许会增加一个更好的提供商。dojo/request可以在不更改代码的情况下使用最好的提供程序。此外,还可以根据URL配置提供程序。一个示例用例是将dojo/request/xhr用于相同域请求,将dojo/request/script用于跨域请求

来源:

  • kitsonk,Dojo核心贡献者
  • dojo/request/registry文档
  • dojo/request文档

最新更新