2012-11-01 3 views
0

J'essaie de trouver un moyen de soumettre plusieurs formulaires avec ajax dans un appel xhr.post avec dojo. La documentation en bas de this page dit:Comment soumettre plusieurs formulaires avec dojo xhr?

En fait, la « forme: » attribut peut être défini sur chaque nœud, non seulement sur nœuds de formulaire. Si votre page contient plusieurs formulaires et que ces formulaires sont joints à une balise div ou span, vous pouvez soumettre tous ces formulaires, si vous définissez "form:" sur la division ou l'étendue environnante. marque.

Spécification de l'ID de par ex. un div qui contient plusieurs formes comme l'attribut « forme » dans un appel XHR ne fonctionne pas:

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

Il échoue dans domForm.formToObject, qui attend vraiment un nœud de forme (ou id) qui contient l'attribut un des éléments.

Est-ce que cette partie de la documentation est incorrecte ou est-ce que quelque chose me manque?

Avez-vous des idées sur la façon de combiner facilement plusieurs formulaires dans un appel xhr d'autres façons?

Répondre

1

Je pense que la documentation est erronée et votre observation est correcte, form attribut est envoyé à formToObject comme argument ..

Voici une solution de contournement:

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

Merci. Qui aide. – James

+0

notez que si un 'input' a un nom' name' identique, le dernier déclaré (dans DOM) prendra la préséance. Les valeurs précédentes sont écrasées – mschr

Questions connexes