次のコードがあります。
var bduplicate;
bduplicate = false;
bduplicate = check_for_duplicate_rule().done(function (result) {
console.log("result from check for duplicate" + result);
if(result == 'true') {
$('#validation_error').html("A similar rule already exists");
return result;
}
});
console.log(bduplicate);
if(bduplicate.success == 'true') {
console.log('im exiting');
return false; //exit this function
}
async メソッド自体の定義は次のとおりです。
function check_for_duplicate_rule() {
var parameters = {
num: $('#num').val(),
condition: $('#condition').val(),
cdidnumber: $('#cdidnumber').val()
}
return $.getJSON(
url = aURLdefinedsomewhere,
parameters,
function (data) {
//if (data=='true') {
//$('#validation_error').html("A similar rule already exists");
//}
} //end data
); //end getJSON
}
問題:
システムは、コンソールに「im enter」と表示される IF ステートメントに入りません。ただし、validation_error 要素のテキストは正しく変更されます。そして、コンソールに次のように表示されます: result from check for duplicate:true ".
私がこれまでに試したこと:
コードに次の行を含めました。
console.log(bduplicate);
私が何を取り戻しているかを見るために。コンソールには、オブジェクトの内容が出力され、さまざまなプロパティが含まれています。「responseText」プロパティと呼ばれるものがあり、responseText: ""true"↵" と表示されます。これが問題でしょうか? ただし、そうである場合、検証エラー要素を設定するテストが合格する理由は説明されていません。
それが役立つ場合、サーバーは次のような ajax 呼び出しのデータです。
return json.encode(true)
質問:
「console.log('im exiting')」コマンドの結果を表示するコードを取得できない理由を理解しようとすることに加えて、json データを返す方法が正しい?
技術的には、次のようになるはずだとどこかで読みました。return json.encode('success: true') これが正しければ、フロントエンドで true をテストするにはどうすればよいですか?
.done() メソッドによって返されるオブジェクトに関するドキュメントを教えてもらえますか? jquery API を検索していますが、まだ何も見つかりません。私はおそらく正しいキーワードで検索していません。
ありがとう。