3

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

在这里,我没有从表单获取调用者模型属性的值。但电话正在发生。如果我在下面进行不推荐使用的调用,而不是这个 ajax 调用,值会被绑定。

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

对于 1.8 中的最新调用而不是参数“数据”,我尝试使用“表单”仍然没有发生。这个问题可能是什么?

4

1 回答 1

3

Dojo 已经弃用了loaderror回调属性,取而代之的是 deferreds/promises


我认为 Dojo 将保持向后兼容性直到 2.0,但也许它已被删除(啊.. 如果您需要 old ,也许 1.8 支持旧语法dojo/_base/xhr)。

另外,请注意最好要求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跨域请求。

来源:

于 2012-09-27T08:27:10.280 回答