使用xhr post和json调用dojo ajax

时间:2012-09-27 07:48:53

标签: spring-mvc dojo

我无法通过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'仍然没有发生。这个问题可能是什么?

1 个答案:

答案 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

来源: