Я использую метод дистанционной проверки и задаю вопросы о следующем разделе http://jqueryvalidation.org/remote-method/.jQuery validator remote method
Ответ оценивается как JSON и должен быть истинным для действительных элементов и может быть любым false, undefined или null для недопустимых элементов, используя сообщение по умолчанию; или строки, например. «Это имя уже принято, попробуйте peter123 вместо», чтобы отобразить его как сообщение об ошибке.
Если сервер echo('custom error');
, он не проходит проверку, но ошибка не отображается. Почему нет?
Если сервер выполняет echo(null);
или echo(false);
или вообще не имеет эха, клиент не получает ответа, он не проходит проверку, и сообщение по умолчанию не отображается. Не следует ли отображать сообщение по умолчанию? Аналогично, если сервер выполняет echo('undefined');
, клиент получает «undefined», но сообщение по умолчанию не отображается.
Сервер Script
<?php
header('Content-Type: text/plain;');
//The following passes validation
//echo('true');
//The following results in the client receiving 1, and "1" is displayed as error
//echo(true);
//echo(1);
//echo('1');
//The following will trigger the default message
//echo(0);
//echo('null');
//echo('false');
//echo('0');
//The following results in no ajax response to client, and no message is displayed.
//Doesn't this result in client getting undefined which should display the default message
//echo(null);
//echo(false);
//no echo at all
//Client receives "undefined", but it doesn't display the default message. Shouldn't it?
//echo('undefined');
//Client receives "custom error", but it doesn't display this text. Shouldn't it?
echo('custom error');
?>
Client Script
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Testing</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
var validator=$("#myForm").validate({
rules: {
bla: {
minlength:2,
maxlength:4,
required:true,
remote: {url:"validate.php",type:'get',data:{a:1,b:2,c:3}}
//remote: "validate.php"
}
},
messages: {
bla: {
remote:"default message"
}
}
});
});
</script>
</head>
<body>
<form id="myForm" method="post">
<input name="bla" id="bla" value="">
<input type="submit" value="submit">
</form>
</body>
</html>
Поскольку существует слишком много вопросов относительно путаницы с использованием метода 'remote', I * почти * закрыл это как дубликат [this] (http://stackoverflow.com/q/16577120/594235) , Тем не менее, ваш немного более конкретный и, возможно, * может быть использован в будущем, чтобы закрыть других. – Sparky