Я не могу понять, почему он выполняет сначала 1, потом 3, потом 2?
Снизу код, а еще ниже - вывод консоли.
Тут есть какая-то джаваскриптерская хитрость или я что-то не понимаю?
function serverRequest(url, params) {
var ajaxContent = null;
if (params === undefined) {
console.log('without parameters'); // 1
$.ajax({ // 2
url: '../backend/' + url + '.php',
success: function (data) {
console.log('response : ' + data);
ajaxContent = JSON.parse(data);
console.log('response parse : ' + ajaxContent);
},
error: function (data) {
ajaxContent = "error";
console.log('ERROR');
},
});
console.log('ajaxContent = ' + ajaxContent); // 3
}
}
AJAX — Asynchronous Javascript And Xml (асинхронный JavaScript и XML). Это значит, что пока идёт передача данных, пользователь может совершать другие, необходимые ему действия.
Перецитировав одного из великих
Проблема в том, что в коде нет операции ожидания. Ни подписка на событие, ни AJAX-вызов, ни даже вызов API не ждут поступления данных - а сразу же передают управление дальше.
Поэтому строка console.log('ajaxContent = ' + ajaxContent); выполняется ДО того, как переменная ajax получит ответ.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости