блок проверки допустимости jQuery и пользовательское правило, которое использует Ajax

Я считал Ваш ответ относительно блока проверки допустимости jQuery, где Вы обрисовываете в общих чертах метод для проверки имени пользователя по значению в базе данных.

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

Вот тыс пользовательского метода...

$.validator.addMethod("uniqueUserName", function(value, element) {
  $.ajax({
      type: "POST",
       url: "php/get_save_status.php",
      data: "checkUsername="+value,
      dataType:"html",
   success: function(msg)
   {
      // if the user exists, it returns a string "true"
      if(msg == "true")
         return false;  // already exists
      return true;      // username is free to use
   }
 })}, "Username is Already Taken");

И вот проверить код...

username: {
    required: true,
    uniqueUserName: true
},

Есть ли особенный метод, я, как предполагается, возвращаю сообщение из php.

Спасибо

A

50
задан Robbie Averill 18 March 2014 в 16:06
поделиться

1 ответ

Вы выполняете запрос AJAX, следовательно: проверка уже завершена, когда ваш настраиваемый валидатор возвращает истину или ложь.

Вам нужно будет работать с async . См. Также этот пост: Как заставить jQuery выполнять синхронный, а не асинхронный запрос Ajax?

Что-то вроде:

function myValidator() {
   var isSuccess = false;

   $.ajax({ url: "", 
            data: {}, 
            async: false, 
            success: 
                function(msg) { isSuccess = msg === "true" ? true : false }
          });
    return isSuccess;
}

Предупреждение:

Начиная с jQuery 1.8, использование async: false с jqXHR ($ .Deferred) устарело; вы должны использовать параметры обратного вызова success / error / complete вместо соответствующих методов объекта jqXHR, таких как jqXHR.done () или устаревший jqXHR.success ().

61
ответ дан 7 November 2019 в 10:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: