0

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"
    }
},
4

2 に答える 2

1

関数内に戻り値を追加してみてくださいsuccess

success: function(msg) {
          return (msg=='FALSE') ? false : true;
      }
于 2012-12-14T16:51:18.160 に答える
0

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: {
    url: compath + "/rmtUserCFC.cfc?method=checkUsernameRemote&returnformat=json",
    type: "post"
  }
},
于 2012-12-18T19:26:02.700 に答える