web-dev-qa-db-fra.com

sérialiser n'inclut pas les champs cachés

Je lance serialize sur un formulaire, où l'un des champs est caché - et c'est un champ très important, qui doit être publié. Existe-t-il un moyen de le sérialiser facilement via jQuery ou dois-je écrire ma propre fonction?

64
gruszczy

Sérialiser le fait inclut tous les éléments input activés avec un attribut name.

121
Josh Stodola

Peut-être que combiner les deux dans un seul sélecteur fonctionnerait?

$(":input,:hidden").serialize();

edit: je viens d'essayer ce qui précède et cela a fonctionné. mais, $ ("form"). serialize (); devrait automatiquement prendre toutes les entrées comme d'autres l'ont mentionné.

2
Jim Schubert

Je suis juste tombé sur ce problème moi-même et j'ai trouvé une solution.

Le problème est lié à la façon dont JQuery récupère les informations html cachées. Il ne récupérera pas le TEXTE d'un champ caché comme valeur, vous devez utiliser la propriété value =.

Pour le définir dans JQUERY, utilisez $(field).val(yourvalue);

1
KilleR

Voici une variation étrange sur ce problème. Les champs cachés ont des noms.

alert($("#myForm").serialize())

Ouvre correctement une fenêtre avec tous les champs cachés. Mais

$.post('myposts.php', $("#myForm").serialize(), function(data) {
            $('#myResult').html(data);
        });

N'a pas les champs cachés. Lorsque le script php fait print_r($_POST) le caché et les cases à cocher sont mising

1
Bob

vous devez ajouter un nom à tous les éléments pour que la fonction de sérialisation fonctionne correctement

0
Cengiz Önkal