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?

Était-ce utile?

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 liveavec 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top