У меня проблема с чем-то, что, вероятно, является простой ошибкой.Javascript AJAX Call Scope - возможно, глупо
Как вы заметите ниже, у меня есть проверка на дублируемую функцию, которая ссылается на внешний PHP, проверяющий базу данных. PHP работает и возвращает данные.
Когда я использую duplicationCheck.done() и анализирую данные, оператор if отвечает правильно (т. Е. Если пользователь ввел дубликат, это проверяет это. ЗДЕСЬ Проблема: несмотря на то, что инструкция if ниже работает правильно, когда isDuplicate имеет значение true, он отображается как неопределенный, когда команда console.log вызывается под функцией done(). Я не могу понять, почему. В моих исследованиях я считаю, что это проблема с асинхронным характером 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);
....
Вы можете запускать события по конкретным элементам, используя [ '.Кнопкой()'] (https://api.jquery.com/change/) вместо того, чтобы делать все это за 1 ход. – Xorifelse
Возможный дубликат [Как вернуть ответ от асинхронного вызова?] (Http://stackoverflow.com/questions/14220321/how-do-return-the-response-from-an-asynchronous-call) – Jacob
@Jacob Я читал это несколько раз, но не могу понять, какая часть имеет отношение к моей конкретной проблеме. Вы можете помочь? –