Потому что это работает не так, как вы подумали. Вы присваиваете своей переменной ссылку на сам AJAX-объект, а не результат выполнения AJAX-запроса. С данными полученными в AJAX-запросе вам нужно работать именно в коллбэк-функции. То есть вот так:
success: function (res) {
/* здесь весь остальной код для работы с данными полученными в запросе */
}});
Или прописать отдельную функцию и передавать ее имя:
function customFunc(res) {
/* здесь весь остальной код для работы с данными полученными в запросе */
}
$.ajax({ // получаем массив вопросов
.....
success: customFunc
});
А присвоить эти данные переменной можно только через промис. Например так:
(async () => {
let array = await new Promise(resolve => {
$.ajax({ // получаем массив вопросов
type: "POST",
url: '/site/questions',
cache: false,
dataType: 'json',
global: false,
success: function (res) {
return resolve(res);
}
});
});
console.log(array); /* вот сейчас в переменной будет то, что вам нужно */
})();