【发布时间】:2017-01-25 00:23:38
【问题描述】:
我遇到了一个很可能是简单错误的问题。
正如您将在下面注意到的,我检查了引用外部 PHP 检查数据库的重复函数。 PHP 正在工作,并返回数据。
当我使用 duplicationCheck.done() 并解析数据时,我的 if 语句会正确响应(即,如果用户输入了重复项,则会对其进行检查。这里的问题是:尽管下面的 if 语句正常运行,但当 isDuplicate设置为true,当在done()函数下方调用console.log命令时,它显示为未定义。我不知道为什么。通过我的研究,我认为这是AJAX的异步性质的问题打电话?
感谢您的宝贵时间。有什么想法吗?
$("#username_submit").click(function() {
function checkForDuplication(username) {
return $.ajax({
url: 'static/experiments/computerized_handwriting/random_assignment.php',
type: 'POST',
data: {userName: username}
});
}
var duplicationCheck = checkForDuplication($('input:text').val());
var isDuplicate;
duplicationCheck.done(function(data){
var response = JSON.parse(data);
if(response.data['json_array'] == "duplicate"){
isDuplicate = true;
alert("dup");
} else {
isDuplicate = false;
}
});
console.log(isDuplicate);
....
【问题讨论】:
-
您可能希望使用
.change()触发特定元素上的事件,而不是一次性完成所有操作。 -
@Jacob 我已经读过几次了,但我不知道哪一部分与我的具体问题有关。你能帮忙吗?
标签: javascript php ajax scope