Создание на лету «ajaxForm» - PullRequest
0 голосов
/ 11 сентября 2011

Я пытаюсь использовать ajaxForm в своей форме, созданной на лету. Фактически, мое приложение выдаст ссылку «на лету» и, щелкнув по этой ссылке, выдаст ajaxForm (снова на лету с помощью jQuery!), Поэтому я использовал функцию .live() с ajaxForm(). Это мой неправильный код:

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

В моей форме, когда я нажимаю кнопку отправки, страница обновляется.

Есть ли решение?

Ответы [ 4 ]

0 голосов
/ 11 сентября 2011

Как уже говорили другие, ваш return false должен работать.

Итак, что-то еще не так. Убедитесь, что jQuery загружен правильно и что ваш обработчик при отправке фактически выполняет , поместив в него код отладки.

Кроме того, убедитесь, что у вас установлен и включен Firebug (или эквивалент для вашего браузера), чтобы вы могли выполнять отладку.

0 голосов
/ 11 сентября 2011

Возможно, вам придется позвонить preventDefault вместо «return false».Ниже приведен псевдокод этого варианта использования jQuery live с формой, объединенной с AJAX:

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

Кроме того, я не уверен, что с ajaxForm (поскольку я не использовал ajaxForm) вам нужно использовать jQuery.live.Судя по документу, он может вам вообще не понадобиться.

0 голосов
/ 11 сентября 2011

return false должен работать, но лучше всего делать event.preventDefault() или event.stopPropagation(), когда вам не нужно делать и то, и другое. В этом случае это будет event.preventDefault(), потому что вы хотите остановить действие по умолчанию отправки формы. Но, как я сказал, return false; должно сработать в вашем случае, так что я подозреваю, что вы можете получить какие-то ошибки с плагином, который вы используете. На вашем месте я бы снова посмотрел документацию на ваш Плагин и убедитесь, что ваши параметры верны. Сразу за спиной я вижу dataType: 'html', и может быть только 'xml', 'script', or 'json', как указано в документации ... Возможно, вы захотите еще раз взглянуть на использование вами плагина.

0 голосов
/ 11 сентября 2011

Попробуйте использовать event.stopPropagation ();которая является функцией JQuery.

Для этого вам нужно будет передать объект события в качестве параметра хандлеру:

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

и использовать эту строку вместо return false;:

event.stopPropagation();
...