由于规则说'emailAccountExists'需要评估为true,如果电子邮件帐户存在,我将返回false。 当我记录响应时,以及我要返回的内容 - 逻辑正常工作。 但是,我的UI没有更新。系统始终认为电子邮件帐户存在。即使日志声明另有说法也是如此。
我也试过'远程'方法......
我认为这是一个计时问题,所以我将'async'设置为false。仍然没有运气。我不知道还有什么可以尝试的。
JavaScript:
'rules': {
'email': {
'required': true,
'email': true,
'hasValidEmailAddress': true,
'emailAccountExists': true
}
....
}
$.validator.addMethod('emailAccountExists', function(value, element) {
$.ajax({
'url': '/my-url?email=' + value,
'type': 'get',
'dataType': 'text',
'timeout': 50000,
'async': false,
'success': function(response) {
console.log((response === '"true"') ? false : true);
return (response === '"true"') ? false : true;
},
'error': function(jqXHR, textStatus, errorThrown) {
console.log('ERROR');
console.log(textStatus);
console.log(errorThrown);
}
});
}, messages.duplicateEmailAddress);
使用'远程'方法:
'remote': {
'type': 'get',
'url': '/my-url?email=' + ('#email').val()
}
它总是返回false。
答案 0 :(得分:0)
您不需要通过查询字符串传递字段的值...
'remote': {
'type': 'get',
'url': '/my-url?email=' + ('#email').val()
}
只需在服务器端代码上使用$_GET
数组即可。此外,由于GET
是默认设置,因此您只需要...
rules: {
email: {
// the other rules,
remote: '/my-url'
}
}
请参阅:http://jqueryvalidation.org/remote-method/
如果您需要更多帮助,则必须显示服务器端代码。