Faire un à la volée 'ajaxForm'
-
28-10-2019 - |
Question
Je suis en train d'utiliser ajaxForm
sur mon sur-la-mouche formulaire créé.En fait, ma demande va produire un lien "à la volée" et en cliquant sur ce lien, il va produire un ajaxForm
(encore une fois à la volée par jQuery!), j'ai donc utilisé le .live()
fonction avec ajaxForm()
.C'est mon mal code:
$('form').live('submit', function() {
$(this).ajaxForm({dataType: 'html', success: function(data) {
alert(data);
}});
return false; // For preventing page refresh!
});
Dans mon formulaire, lorsque je clique sur le bouton "envoyer", la page s'actualise.
Est-il une solution?
La solution
Comme d'autres l'ont dit, votre code générique devrait fonctionner.
Donc, quelque chose ne va pas.Assurez-vous que jQuery est chargé correctement et que votre gestionnaire à la soumission s'exécute réellement en y plaçant du code de débogage.
Assurez-vous également que Firebug est installé et activé (ou équivalent pour votre navigateur) afin de pouvoir effectuer votre débogage.
Autres conseils
Essayez d'utiliser event.stopPropagation ();qui est une fonction JQuery.
Pour ce faire, vous devrez prendre l'objet événement comme paramètre du gestionnaire:
$('form').live('submit', function(event){
et utilisez cette ligne à la place de return false;
:
event.stopPropagation();
Le return false
devrait fonctionner, mais il est préférable de faire event.preventDefault()
ou event.stopPropagation()
lorsque vous n'avez pas besoin de faire les deux.Dans ce cas, ce serait event.preventDefault()
car vous souhaitez arrêter l'action par défaut de soumission du formulaire.Mais comme je l'ai dit, return false;
aurait dû fonctionner dans votre cas, donc je soupçonne que vous pourriez avoir des erreurs avec le plugin que vous utilisez.Si j'étais vous, je regarderais à nouveau la documentation pour votre
plugin et assurez-vous que vos options sont correctes.Tout de suite, je vois un dataType: 'html'
et il ne peut y avoir que 'xml', 'script', or 'json'
comme indiqué dans la documentation ... Vous voudrez peut-être jeter un autre regard sur votre utilisation du plugin.
Vous pourriez avoir besoin d'appeler preventDefault
en lieu et place de "return false".Le Pseudo-code de ce cas d'utilisation de jQuery live
avec la forme combinée avec l'AJAX est ci-dessous:
//Override form submit
$("form").live("submit", function (event) {
event.preventDefault();
var form = $(this);
$.ajax({
url: form.attr('action'), // Get the action URL to send AJAX to
type: "POST",
data: form.serialize(), // get all form variables
success: function(result){
// ... do your AJAX post result
}
});
});
Aussi, je ne sais pas si avec ajaxForm (que je n'ai pas utilisé ajaxForm), vous devez utiliser jQuery.live
.Déduire de la doc, vous ne pourriez pas besoin du tout.