我在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以确保它被设置为返回boolean和plain:
<cffunction name="checkUsernameRemote" access="remote" returntype="boolean" output="no" returnformat="plain">
然后在我的返回值上执行了Serialize 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"
}
},
答案 0 :(得分:1)
尝试在success
函数中添加返回值。
success: function(msg) {
return (msg=='FALSE') ? false : true;
}
答案 1 :(得分:0)
我切换了CFC以确保它被设置为返回布尔值和普通:
<cffunction name="checkUsernameRemote" access="remote" returntype="boolean" output="no" returnformat="plain">
然后在我的返回值上执行了Serialize JSON:
<cfset LOCAL.result = SerializeJSON(LOCAL.result)/>
<cfreturn LOCAL.result />
在我的jQuery中,我摆脱了addMethod()并将其移动到远程规则中:
username: {
required: true,
rangelength: [4,50],
remote: {
url: compath + "/rmtUserCFC.cfc?method=checkUsernameRemote&returnformat=json",
type: "post"
}
},