2012-11-01 48 views
0

我想找到一種方法,如何在一個xhr.post調用與dojo提交多個表單與ajax。 在this page底部的文件說:如何使用dojo xhr提交多個表單?

事實上,屬性「形式:」能在每個節點上設置,不僅對 形式節點。如果你的頁面包含一個以上的形式和這些形式 被封閉了div-或跨越標記,那麼你可以提交所有 這些形式,如果你設置「的形式:」到周圍div-或翼展標籤。

Specifiying的例如標識包含多個形式在XHR調用「形式」屬性的div中不起作用:

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

它未能在domForm.formToObject,真的需要一個形式節點(或ID),其中包含的元素屬性。

是文檔只是錯了,這部分或我做我錯過了什麼?

你有任何想法如何輕鬆多種形式組合成其他方式之一XHR呼叫?

回答

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

}); 
+0

感謝。這有幫助。 – James

+0

請注意,如果有任何'輸入'具有相同的'name',則最後聲明的(在DOM中)將具有優先權。先前的值被覆蓋 – mschr