Я считал Ваш ответ относительно блока проверки допустимости 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
Вы выполняете запрос 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 ().