Не пойму, почему Ajax JQuery работает так

218
10 апреля 2017, 06:39

Я не могу понять, почему он выполняет сначала 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 
    } 
}

  • without parameters
  • ajaxContent = null
  • response : "OK"
  • response parse : OK
Answer 1

AJAX — Asynchronous Javascript And Xml (асинхронный JavaScript и XML). Это значит, что пока идёт передача данных, пользователь может совершать другие, необходимые ему действия.

Перецитировав одного из великих

Проблема в том, что в коде нет операции ожидания. Ни подписка на событие, ни AJAX-вызов, ни даже вызов API не ждут поступления данных - а сразу же передают управление дальше.

Поэтому строка console.log('ajaxContent = ' + ajaxContent); выполняется ДО того, как переменная ajax получит ответ.

READ ALSO
Перебрать все элементы на странице с определённым идентификатором

Перебрать все элементы на странице с определённым идентификатором

Есть функция, которая перебирает все элементы на странице с определённым классом и поочерёдно сбрасывает с них стили:

257
Почему не работает слайдер swipe вместе с jquery?

Почему не работает слайдер swipe вместе с jquery?

Есть конкретный слайдер SwipeОн может работать и с jquery, и без

573
Проблема с работой функций slideUp, slideDown

Проблема с работой функций slideUp, slideDown

Здравствуйте! Сразу скажу, что jQuery, точнее JavaScript, ведь jQuery - библиотека, начал изучать не давно, как и вообщем HTML, CSS

200
FTP сервер из девайса - Android

FTP сервер из девайса - Android

В ES проводнике есть функция открытия доступа к файлам посредством локальной сети через FTPДевайс выступает в роли FTP сервера

245