У меня возникла проблема с заполнением и доступом к глобальной переменной с помощью ajax. У меня есть следующий код (урезанный немного):Проверить завершение вызова ajax
var answers;
$(document).ready(function() {
showResults();
console.log(answers);
}
function showResults(){
$.ajax({
url: "/wp-content/themes/hoekiesikeenschool/question-storage.php",
data: { action: "get_results" },
type: "post",
dataType: "json"
}).done(function (data) {
answers = data.questionary;
return answers;
});
}
Мой вопрос заключается в следующем: Когда я вхожу answers
в функции done
это дает мне хороший массив. Это означает, что переменная array
заполнена. Но когда я регистрирую его с $(document).ready
, он возвращает пустую переменную. Вероятно, это связано с тем, что вызов AJAX является асинхронным, и журнал запускается до заполнения переменной.
Однако мне нужно использовать эту переменную на другой странице, поэтому мне нужно получить к ней доступ от $(document).ready
... Любая идея о том, как проверить, заполнена ли переменная? Или когда завершается showResults()
? Заранее спасибо за вашу помощь!
- Edit -
Спасибо за ваши ответы! Но я все еще борется со следующим: Насколько я понимаю, я могу вызвать другую функцию из обратного вызова ajax и передать ей данные. Дело в том, что после вызова мне нужно сделать много разных вещей, и единственным способом заставить его работать сейчас является вызов функции в обратном вызове ajax, а затем вызов другой из нее и т. Д. ..
Таким образом, я заканчиваю wit showResults();
в doc.ready
, который затем выполняет множество функций, которые все «связаны» вместе. В любом случае, я могу вернуть данные в переменную, для использования в других местах? Надеюсь, я сделал это ясно, английский не мой родной язык, извините.
нормально, все может быть сделано с обратными вызовами, так что вы не можете иметь доступ к переменной в doc.ready.Можете ли вы немного рассказать о «использовании этой переменной на других страницах»? – GingerJim
Спасибо за ваш ответ! Проблема в том, что мне приходится делать много вещей с данными, которые я получаю от этого вызова ajax. Возможно, это мой недостаток опыта, но я могу заставить его работать, вызывая другую функцию из обратного вызова, а затем еще одну из этой и т. Д. Я бы хотел, чтобы вызов ajax просто заполнил переменную, которую я могу использовать в больше места, чем один. Надеюсь, я дал понять, что английский не является моим родным языком :(Я также обновил свой вопрос. –