@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 скриптами?
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
@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); // Говорит, что переменная не объявлена
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вам надо разместить код, использующий полученные данные, в обработчике .success
А лучше отказаться от jQuery и использовать fetch вместе с async/await.
Ответ написан
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 ()
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Artezio Могилев
от 2 800 до 3 300 $
01 мар. 2021, в 10:33
2000 руб./за проект
01 мар. 2021, в 10:22
15000 руб./за проект
01 мар. 2021, в 10:18
120000 руб./за проект