Мне нужно проверить поле электронной почты, используя плагин jQuery.Validate(), у него есть метод "Удаленный", который мы должны отправить на сервер, а серверу нужно вернуть true или false, вместо использования традиционного способа (добавление функции на сервер для возврата true или false), мне нужно получить ответ json от сервера и при успешном запуске функции решить, куда возвращать true или false...
Вот как выглядит ответ с сервера (я использую валидацию формы yii ajax)
{
"zipcode":[
"Zipcode cannot be blank."
],
"email":[
"Email is already registered"
],
}
Если в массиве указан адрес электронной почты, который означает, что у проверки были ошибки. Поэтому я создаю правило проверки правильности, как показано ниже:
'email': {
required: true,
email: true,
remote:{
type:"POST",
url:url,
dataType:'json',
data:{'email':function(){
$('#email').val();
},ajax:'validate'},
success:function(resp){
$.each(resp,function(index,value){
if(index == "email")
return false;
});
}
}
},
Но не работает, также я не нашел нигде, где я могу добавить сообщение об ошибке для удаленной проверки, я хотел бы передать значение электронной почты массива в качестве сообщения...
Вам нужно заменить функцию успеха на следующую функцию:
dataFilter: function (data) {
return 'false'; //Email not exist
return 'true'; //Email already exist
}
Просьба передать значение true/false как строку.
Для отображения сообщения:
remote:{......},
messages:{email:'Please enter valid email', remote : "{0} is already exist"}
Я думаю, что это поможет.