JQuery, как повторно отправить форму после успешного вызова AJAX - PullRequest
3 голосов
/ 11 июня 2010

Я использую JQuery для отправки формы через запрос ajax.Я использую

form.submit(function() {
    if( success ) {
        return true;
    }

    validate(); //proceeds to an ajax call

    return false;
}

В случае успешного запроса я хочу продолжить отправку формы или обратный вызов пользователя.Поэтому, если пользовательский обратный вызов не определен, я отправлю форму при успешном завершении проверки формы (из моей функции validate).

config = {
    successCallback: function() {
        success = true;
        form.submit(); //does not work
    }
};

validate = function() {
    $.ajax(
        ...
        success: function(data) {
            //code logic
            config.successCallback();
        }
    );
};

Обратный вызов успеха ajax вызовет config.successCallback (), и если он никогда не былпереопределенный пользователем, он перейдет к обычной отправке формы.Я попытался с помощью переменной экземпляра (success) убедиться, что возвращаемое значение true перейдет к отправке формы по умолчанию.

К сожалению, это не работает.Кажется, что оператор return false, который предотвращает отправку формы по умолчанию, будет игнорировать любые дальнейшие вызовы submit, даже если была установлена ​​переменная экземпляра.Это работает только после того, как вы нажмете кнопку отправки в другой раз (это заставит ее работать дважды).

Есть ли обходной путь для этого.Я хочу использовать как пользовательский обратный вызов, когда он предоставлен, так и переходить к отправке формы по умолчанию, когда нет, и, поскольку я использую функцию ajax для проверки формы, обратный вызов успеха ajax усложняет ситуацию.

1 Ответ

2 голосов
/ 11 июня 2010

Убедитесь, что success находится в области действия, или просто используйте form[0].submit() в вашем обратном вызове успеха, чтобы отправить форму DOM и обойти зарегистрированный обработчик jQuery (при условии, что в коллекции только одна форма DOM).

http://jsfiddle.net/J4nsx/

Последний метод - это то, как плагин проверки jQuery рекомендует обойти потенциальные проблемы с слишком большой рекурсией .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...