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