@ivanarefiev

Почему глобальная переменная не изменяется внутри $.ajax: success?

Здравствуйте.

Есть код:
let data

$.ajax({
    type: "POST", 
    url: "getdata.php", 
    success: function (msg) { 
         data = 'информация'
    },
    error: function (response) { // Данные не отправлены
        alert('Ошибка. Данные не отправлены.')
    }
})

alert(data)


Возвращает undefined.
В чем ошибка?
  • Вопрос задан
  • 1139 просмотров
Решения вопроса 2
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
function getData(){
  return $.ajax({
    type: "POST", 
    url: "getdata.php", 
  });
}

getData.done(function(data){
  alert(data);
});


async function getData() {
    return new Promise(function(resolve, reject) {
        $.ajax({
            type: "POST", 
            url: "getdata.php", 
            success: function (msg) { 
                resolve(msg);
            },
            error: function (response) { // Данные не отправлены
                reject('Ошибка. Данные не отправлены.');
            }
        }); 
    });
}

let data = await getData();
Ответ написан
KickeRocK
@KickeRocK
FrontFinish
Потому что аякс функция асинхронна и присвоение происходит только в success - коллбэке.
Поэтому там undefined, выведите значение переменной внутри success и увидите.
Т.е Она изменяется, но позже её вывода(алерта).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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