@andrey_levushkin

Почему не получается вытащить значение из AJAX во внешнюю область?

Через ajax получаю значение POST запроса. Пытаюсь сохранить его в переменную, объявленную за областью AJAX запроса:
var testResult;
$.ajax({
        url: 'test.php',
        method: "POST", /
        data: {
            test: 'test',
        },
        success: function(data) {
        	alert (data); // Результат успешно выводится
                testResult = data;
        }
});
console.log(testResult); // Говорит, что переменная не объявлена


Как можно в таких ситуациях возвращать значения в область за AJAX скриптами?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вам надо разместить код, использующий полученные данные, в обработчике .success
А лучше отказаться от jQuery и использовать fetch вместе с async/await.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Mr_Sergo
@Mr_Sergo
var testResult

function ajax () {
	return new Promise(resolve => {
    $.ajax({
      url: 'test.php',
      method: "POST", 
      data: { test: 'test', },
      success: data => resolve(data)
    })
  })
}

(async () => {
  testResult = await ajax ()
  console.log(testResult)
})()

но это извращение какое-то, лучше как вам подсказали выше - используйте fetch ()
Ответ написан
Комментировать
@andrey_levushkin Автор вопроса
Нашёл решение - выключить асинхронность
var testResult;
$.ajax({
        async: false,
        url: 'test.php',
        method: "POST", /
        data: {
            test: 'test',
        },
        success: function(data) {
        	alert (data); // Результат успешно выводится
                testResult = data;
        }
});
console.log(testResult); // Говорит, что переменная не объявлена
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы