удаленный запрос плагина проверки jquery - обработка ошибок / сбоев - PullRequest
5 голосов
/ 31 января 2012

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

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

remote: {
                url: location.pathname + "/EmailUnique",
                timeout: 20000,
                data: {
                    userID: function() {
                        return $("#Form_EditProfileForm_userID").val();
                    }
                }
            }

1 Ответ

4 голосов
/ 01 февраля 2012

Да, добавить функцию ошибки:

remote: {
    //your normal $.ajax stuff here
    ,
    error: function(jqXHR, textStatus, errorThrown) {
       //deal with the error
    }
}

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

Предполагая, что вы сохранили свой объект проверки в переменной v, ваша функция ошибки может быть такой простой:

$('#inputWithRemote').rules('remove','remote');.
v.pendingRequest--;

Честно говоря, бизнес v.pendingRequest состоит в том, чтобы иметь дело с тем, что я бы назвал ошибкой в ​​плагине Validation - он увеличивает этот счетчик pendingRequest, когда запускает запрос ajax, но не имеет своего собственного кода для обработки. с ошибками в ответе.

Смотрите это в действии здесь: http://jsfiddle.net/ryleyb/H96TD/ (обратите внимание, что я установил тайм-аут на 2 секунды и использовал некоторый специальный код ajax jsfiddle, чтобы ответ занял 3 секунды).

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