0

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

事实上,属性“form:”可以在每个节点上设置,而不仅仅是在表单节点上。如果您的页面包含多个表单,并且这些表单包含在 div- 或 span-tag 中,那么您可以提交所有这些表单,前提是您将“form:”设置为周围的 div-或 span-tag。

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

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

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

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

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

4

1 回答 1

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
  } );

});
于 2012-11-03T20:37:29.713 回答