JQuery, пользовательские проверки и AJAX - PullRequest
1 голос
/ 15 сентября 2011

Мой вопрос больше основан на процессах, чем на коде, но чтобы поделиться (и, возможно, наткнуться на некоторые несоответствия), я использую:

  • jQuery 1.6.2
  • jQuery Validations 1.8.1

Так что вот так ...

При добавлении пользовательской проверки (с использованием addMethod), которая требует вызова на сервер (вместо встроенного удаленного вызова), вы должны установить, чтобы ответ происходил синхронно , поскольку метод завершится раньше результат возвращается с сервера. Это правильно?

Я также предполагаю, что 2 основных способа сделать это - вызвать запрос $ .ajax с помощью async false или deferred.promise (). Это правильно?

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

Спасибо за любые ответы!

1 Ответ

2 голосов
/ 15 сентября 2011

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

$("#myform").validate({
    rules: {
        email: {
            required: true,
            email: true,
            remote: {
                url: "check-email.php",
                type: "post",
                data: {
                    username: function() {
                        return $("#username").val();
                    }
                }
            }
        }
    }
});

Синхронные запросы AJAX (или SJAX) не рекомендуются для выполнения.

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