• Как вернуть data из функции ajax?

    @DyadyaSeoma
    Люблю пофантазировать
    Давайте дядя Сёма объяснит...
    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 и проверку переменной на пустоту....)

    Ваш дядя Сёма!
    Ответ написан
    Комментировать