remote
メソッドをjQuery Validationにして、ユーザー名が既にシステムに存在するかどうかを確認しています。ユーザが存在する場合、does_user_exist.php
スクリプトは1
を返します。jQueryのエラー応答が有効でない
$registration.find(".username").each(function() {
var $this = $(this);
$this.rules('add', {
remote: {
url: "does_user_exist.php",
type: "post",
dataType: "json",
data: {uname: function(){ return $this.val(); } },
async: false,
success: function (data) { //returns 1 if user exists
if (data) {
console.log("false!");
return "Sorry, that user already exists." //doesn't work
//return false; //doesn't work
//return data; //doesn't work
//return {"string"}; //doesn't work
//return {0: "string"};//doesn't work
} else {
console.log("true!");
return true;
}
}
},
messages: {
remote: jQuery.format("{0}") //doesn't work
// remote: "Simple string doesn't work here either"
}
});
});
私の問題は、エラーメッセージが表示されないことです。 console.log
出力から、ユーザーが存在するときにfalse!
が正しくログ記録されるが、エラーメッセージが表示されないことがわかります。
コメントアウトされた行からわかるように、私は推測でエラーが発生していることを正確に把握しようとしています。フォーマットが間違っていますが、私は成功していません。
編集3: バックエンド応答を変更することができました。 PHPは、true
/false
のJSONコードを送信しています。私たちは、次の方法で、バックエンドの応答を送信しようとしましたが、プラグインは関係なく、我々は何をすべきか、それをキャッチしないように見えるしません:
json_encode(false)
json_encode('["false"]')
json_encode("false")
json_encode(["false"])
"false"
false
NULL
""
0
私の知る限り、ドキュメントに基づいてこれらのいずれかを言うことができるように働いている必要があります。
応答はJSONとして評価され、有効な要素、 ための真でなければならないとすることができる任意の、偽未定義または デフォルトのメッセージを使用して、無効な要素の場合はnull。
注:この質問に対する回答は、this issueに関連する可能性があります。
$registration.find(".username").each(function() {
var $this = $(this);
remote: {
url: "does_user_exist.php",
type: "post",
data: {entityExistence: function(){return $this.val();} },
success: function(data){ console.log(data); }
},
messages: {
remote: "Sorry, that username is not available."
}
});
PHPスクリプトは常に正しくtrue
またはfalse
を返している。ここで
は改訂コードです。ドキュメントによれば、true
以外のものは、エラーメッセージを引き起こすはずです。しかし、エラーメッセージが表示されません。他の小切手が正常に機能しているため(例:rangelength
、ここでは貼り付け済みのコードを削除しています)、エラーメッセージが機能しています。
リモートメソッドのマニュアルを読んでいませんか?サーバーコードによって何が返されなければならないかが明確に説明されています。 – Sparky
@ Sparky:ところで、はい、私はドキュメントを読んでいました、特に[この部分](http://jqueryvalidation.org/remote-method/):_応答はJSONとして評価され、有効な要素デフォルトのメッセージを使用して、無効な要素に対してfalse、未定義またはnullのいずれかを指定できます。または文字列、たとえば。 – brentonstrine
また、有効な要素について_ _ "true"でなければなりません "_ _ユーザーが存在しないときに_ _を返しますか?あなたの '1'は文字列か' true'と解釈されますか?私たちは既に '1'は_ "false、undefinedまたはnull"ではないことを知っています_ – Sparky