Travaillant actuellement sur un projet mettant en œuvre du jQuery, je suis tombé sur un problème qui m’a fait perdre du temps lors de la mise en prod. En effet ce problème ne se posait pas lors des tests en développement mais apparaissait sur le serveur de production (je ne sais pas pourquoi d’ailleurs).
Le problème se trouvait sur un formulaire simple de login que je gère en ajax. Sur ce formulaire, je pose un handler sur l’évenement submit de la form pour traiter le post en arrière plan et ainsi ne pas faire recharger la page si je dois afficher un message d’erreur (classique).
Seulement ici rien ne se passait du coté javascript et le formulaire était donc envoyé de façon normal.
Et la raison est très simple: il ne faut pas nommer son input[type=submit] en “submit”.
En clair: le code faux:
Et le code qui fonctionnera:
En complément, le code jQuery:
$.post($('#myform').attr('action'), $("#myform").serialize(),function(data){
var response = jQuery.parseJSON(data);
//traiter la reponse
});
return false;
});
En espérant que cela pourra aider quelqu’un…
Voir aussi:
La documentation officielle de jQuery qui m’a mis sur la voie.
















January 16th, 2011 at 18:36
Ca aura en effet aidé quelqu’un !