59 votes

Comment obtenir le formulaire de données comme un objet jquery

J'ai essayé jQuery('#form_id').serialize(). Cela renvoie uniquement les données de forme d'une chaîne encodée url. Est-il possible d'obtenir le formulaire de données comme un objet?

96voto

Pointy Points 172438

Avez-vous essayé "serializeArray"? Qui vous donne un tableau de noms et de valeurs. Vous pourriez transformer en un objet si vous voulais:

var paramObj = {};
$.each($('#myForm').serializeArray(), function(_, kv) {
  paramObj[kv.name] = kv.value;
});

(Je vais vérifier à nouveau pour voir ce que jQuery ne avec des tableaux; je pense qu'il code comme Javascript valeurs de tableau, mais je ne suis pas sûr à 100%.)

edit ah non, elle n'a pas défini de plusieurs valeurs de paramètres sous la forme de tableaux - vous obtenir la répétition du même nom. Ainsi, le faire-une-objet code devrait ressembler à ceci:

var paramObj = {};
$.each($('#myForm').serializeArray(), function(_, kv) {
  if (paramObj.hasOwnProperty(kv.name)) {
    paramObj[kv.name] = $.makeArray(paramObj[kv.name]);
    paramObj[kv.name].push(kv.value);
  }
  else {
    paramObj[kv.name] = kv.value;
  }
});

(ou quelque chose comme ça; il pourrait sans doute être un peu serrés l'un.)

34voto

Darin Dimitrov Points 528142

Vous pouvez prendre un coup d'oeil à la serializeArray fonction:

$('#form_id').serializeArray()

5voto

DDTech Points 51

J'ai trouvé un plugin jQuery qui gère ce: jQuery.fn.formParams de JavaScriptMVC

et un blogentry qui la recouvre avec plusieurs échantillons: Jupiter24

hth

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X