jQuery验证addmethod总是返回true

时间:2012-12-14 16:48:03

标签: jquery jquery-validate

我在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"
    }
},

2 个答案:

答案 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"
  }
},