我在我的 jquery 验证页面中添加了一个用户名检查可用功能。如果我查看 Firebug 中远程功能的响应,我会看到正确的响应 - TRUE 或 FALSE。同样,如果我在响应消息中添加一个 alert() ,它会显示正确。但是,使用下面的代码 - addmethod 总是返回 TRUE。
$.validator.addMethod('usernamecheck',function(username) {
var postURL = [url to remote function]
$.ajax({
cache:false,
async:false,
type: "POST",
data: "username=" + username,
url: postURL,
success: function(msg) {
result = (msg=='FALSE') ? false : true;
}
});
return result;
}, '');
我已经验证了该函数仅返回布尔值 true 或 false,但我很难理解为什么true
每次都返回结果。
解决了
我切换了 CFC 以确保它被设置为返回布尔值和普通值:
<cffunction name="checkUsernameRemote" access="remote" returntype="boolean" output="no" returnformat="plain">
然后对我的返回值进行了序列化 JSON:
<cfset LOCAL.result = SerializeJSON(LOCAL.result)/>
<cfreturn LOCAL.result />
在我的 jQuery 中,我摆脱了 addMethod() 并将其移至远程规则中:
username: {
required: true,
rangelength: [4,50],
remote: {
cache:false,
async:false,
url: compath + "/rmtUserCFC.cfc?method=checkUsernameRemote&returnformat=json",
type: "post"
}
},