Как выполнить функцию ajax перед отправкой формы - PullRequest
0 голосов
/ 30 марта 2012

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

// On form submission
$("#profile").submit(function() {
    submitForm(function(result) {
        return result;
    });
});

function submitForm(callback) {
    var dept;
    if (IsEmpty($("input[name=dept_id1]").val())) {
        dept = $("select[name=dept_id]").val();
        $.post("funcs.php", {'dept':dept, op:'select'}, function(d) {
            callback(true);
        });
    } else {
        dept = $("input[name=dept_id1]").val();
        $.post("funcs.php", {'dept':dept}, function(d) {
            callback(true);
        });
    }
}

Если я не разрешу отправлять форму, действие будет успешно выполнено, но мне придется вручную перейти на страницу результатов, чтобы увидеть изменения. Если я разрешу отправлять форму, изменения не вступят в силу.

Коды, которые я вставил сюда, позволяют отправлять форму после функции ajax, но не вносят никаких изменений на стороне сервера. Спасибо за любую помощь.

1 Ответ

1 голос
/ 30 марта 2012

В этой ситуации я бы рекомендовал использовать кнопку вместо кнопки отправки в вашей форме. Если вы сейчас используете, например:

<form id="profile">    
Some form fields
<input type="submit" value="Submit" />
</form>

Тогда подумайте вместо этого:

<form id="profile">
Some form fields
<input type="button" onclick="submitForm(submitCallback);" />
</form>

Это предотвратит автоматическую отправку формы при нажатии кнопки. На самом деле вы можете отправить форму в функцию обратного вызова, например:

function submitCallback() {
    $('#profile').submit();
}

Или что-то в этом роде. Код не проверен, но это должно быть что-то в этом роде.

Редактировать: После этого вы захотите сбросить обработчик событий в исходном коде для $ ('# profile'). Submit ... в противном случае вы запустите этот ajax дважды.

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