如何使用dojo xhr提交多个表单?

时间:2012-11-01 13:26:39

标签: javascript ajax forms dojo

我正在尝试找到一种方法,如何使用dojo在一个xhr.post调用中使用ajax提交多个表单。 this page底部的文档说:

  

实际上,可以在每个节点上设置属性“form:”,而不仅仅是on   表单节点。如果您的网页包含多个表单和这些表单   用div或span-tag包围,然后你就可以全部提交了   这些表单,如果你将“form:”设置为周围的div或span-tag。

指定例如包含多个表单的div作为xhr调用中的“form”属性不起作用:

xhr.post({
    form: "idOfDivThatSurroundsManyForms",
    ...
});

它在domForm.formToObject中失败,它确实需要一个包含elements属性的表单节点(或id)。

这部分文档是错误的还是我错过了什么?

您是否有任何想法如何以其他方式轻松地将多个表单组合成一个xhr调用?

1 个答案:

答案 0 :(得分:1)

我认为文档错误,您的观察结果是正确的,form属性作为参数发送给formToObject ..

这是一种解决方法:

require(["dojo/_base/xhr", "dojo/query", "dojo/_base/lang", "dojo/dom-form"], function (xhr, query, lang, domForm) {

  var mergedForms = {}
  query('form', 'idOfDivThatSurroundsManyForms').forEach( function(form) {
        lang.mixin(mergedForms, domForm.formToObject(form));
  } );
  xhr.post( {

    content: mergedForms
  } );

});