我正在尝试找到一种方法,如何使用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调用?
答案 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
} );
});