JQuery проверить форму с AJAX - PullRequest
       0

JQuery проверить форму с AJAX

1 голос
/ 06 августа 2010

Я пытаюсь проверить форму, используя вызов AJAX для проверки доступных ресурсов. Если проверка инвентаризации содержит ошибку, она возвращает сообщение, если нет, форму следует отправить.

У меня есть следующий код:

$("form[id*='distributor_']").submit(function(){
    return checkAvailableInventory($(this));
});

function checkAvailableInventory(form) {
    $.ajax({
        url: "/ajax/quantity.php?" + form.serialize(),
        success: function(msg) {
            if (msg) {
                alert(msg);
                return false;
            } else {
                return true;
            }
        }
    });
}

Я подозреваю, что эта проблема возникает из-за асинхронной природы AJAX и что условие success: не срабатывает до тех пор, пока не завершится жизненный цикл checkAvailableInventory ().

У кого-нибудь есть предложения по решению этой проблемы? Я видел несколько примеров, когда люди использовали тайм-ауты, но это похоже на обход возможных проблем.

Ответы [ 2 ]

2 голосов
/ 06 августа 2010

Один из вариантов - сделать вызов не асинхронным.Вы можете установить значение async в значение false.Это правда по умолчанию.Не уверен, как долго будет длиться вызов, поскольку он может заблокировать браузер до его завершения.

РЕДАКТИРОВАТЬ: Другой вариант - вернуть false из вашего метода, который делает вызов ajax.Затем в методе успеха, когда он достигнет этого, вы можете отсоединить функцию отправки от формы, а затем просто вызвать form.submit, и он просто отправит туда, куда обычно без проверки.

0 голосов
/ 06 августа 2010

вы можете захотеть проверить плагин jQuery validate! он довольно прост в использовании и прекрасно справляется с удаленной проверкой.

Плагин: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ документы по удаленной проверке: http://docs.jquery.com/Plugins/Validation/Methods/remote#options

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