Pregunta

Estoy tratando de usar ajaxForm en mi forma creada en la marcha. De hecho, mi aplicación producirá un enlace 'sobre la mosca' y al hacer clic en ese enlace, producirá un ajaxForm (de nuevo en la marcha de jQuery!), Así que usé el .live() función con ajaxForm(). Este es mi equivocado código:

$('form').live('submit', function() {
    $(this).ajaxForm({dataType: 'html', success: function(data) {
        alert(data);
    }});
    return false; // For preventing page refresh!
});

En mi formulario, cuando hago clic en el botón Enviar, la página se actualiza.

¿Hay una solución?

¿Fue útil?

Solución

Como otros han dicho, tu return false Deberia trabajar.

Entonces, algo más está mal. Asegúrese de que JQuery esté cargado correctamente y que su manejador en la suma realmente ejecuta colocando el código de depuración en él.

Además, asegúrese de tener Firebug instalado y habilitado (o equivalente para su navegador) para que pueda realizar su depuración.

Otros consejos

Intente usar event.stoppropagation (); que es una función jQuery.

Para hacerlo, deberá tomar el objeto del evento como parámetro para el Handeler:

$('form').live('submit', function(event){

y use esta línea en lugar de return false; :

event.stopPropagation();

los return false debería funcionar, pero es una mejor práctica hacer event.preventDefault() o event.stopPropagation() Cuando no tienes necesidad de hacer ambas cosas. En este caso sería event.preventDefault() Porque desea detener la acción predeterminada de enviar el formulario. Pero como dije return false; Debería haber funcionado en su caso, así que sospecho que podría recibir algún tipo de errores con el complemento que está utilizando. Si yo fuera tú, volvería a ver la documentación para sucomplemento y asegúrese de que sus opciones sean correctas. Justo en la parte posterior veo un dataType: 'html' y solo puede haber 'xml', 'script', or 'json' Como se indica en la documentación ... es posible que desee echar un vistazo a su uso del complemento.

Es posible que tengas que llamar preventDefault en lugar de "regresar falso". Pseudo código de ese caso de uso de jQuery liveCon la forma combinada con AJAX está a continuación:

    //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
            }
        });
    });

Además, no estoy seguro de si con AJAXFORM (como no he usado AjaxForm) necesitas usar jQuery.live. Inferir del documento, es posible que no lo necesite en absoluto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top