我有以下代码:
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
}
这是异步方法本身的定义:
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
}
问题:
系统从不进入打印到控制台“我正在进入”的 IF 语句。但它确实正确地更改了 validation_error 元素的文本。它在控制台中打印以下内容:结果来自检查重复:真“。这让我相信我测试存储在 bduplicate 中的结果的方式是不正确的。
到目前为止我已经尝试过:
我在代码中包含以下行:
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,但还没有找到任何东西。我可能没有使用正确的关键词进行搜索。
谢谢。