Давайте дядя Сёма объяснит...
Ajax и javascript суть одно и тоже, но живут они с разной скоростью.
Все глобальные переменные javascript видны в ajax сразу и их можно изменять. И они таки изменятся везде, но не сразу. Но пока ajax их изменяет, javascript уже отработал и отдыхает.
Чтобы это не мешало - нужно попросить javascript подождать.
Например вот так:
var data_from_ajax= "";
$.ajax(
{
type: 'POST',
url: 'ajax_do_it.php',
dataType: 'json',
beforeSend: function(data)
{
alert("Начинаю выполнение Ajax");
},
success: function(data)
{
alert("Запрос POST обработан и вернул данные!");
window.data_from_ajax=data['PHP_result_here'];
},
error: function (xhr, ajaxOptions, thrownError)
{
alert("Ошибка с PHP");
},
complete: function(data)
{
}
}
);
/* Тут ничего нет, так как javascript обогнал ajax и переменная ещё не присвоена*/
console.log(data_from_ajax);
setTimeout(function()
{
console.log(data_from_ajax); // Покажет данные из PHP
/* Только здесь данные из PHP доступны */
}, 3000);
/* И тут ничего нет, так как javascript обогнал ajax и переменная ещё не присвоена*/
console.log(data_from_ajax);
Но ждать 3 (или сколько вы там поставите) секунды скучно и не красиво. Это только для примера, так как нормальные пацаны так не делают... Используйте VUE и вот с ним будет красиво. Он и сам подождет и много чего поможет сделать с data_from_ajax (Ну или setInterval и проверку переменной на пустоту....)
Ваш дядя Сёма!