Страницы

Поиск по вопросам

понедельник, 13 апреля 2020 г.

Вернуть $.ajax data в return функции

#jquery #ajax #javascript

                    
Есть аякс запрос в функции
function Check_production(order_number){
var result = false;

$.ajax({
   url: "load/check_production.php",
   cache: false,
   async: false,
   data: {zakaz_number:zakaz_number}, 
   type: 'POST',
   success: function(data){
        if (data == "true"){
            result = true;
        }else {
            result = false;
        }
   }
 });

return result;

}
Можно ли сделать более красиво без отключения асинхронного запроса / локальной переменной
/ каким либо еще способом, чтобы Check_production вернула result?    


Ответы

Ответ 1



Посмотрите в сторону объекта Deferred, пример с ajax: function SomethingInit(id){ this.init = function(id) { // Загрузка с сервера информации this.load(id).done(function() { // ... здесь продолжается инициализация ... alert("продолжаем после успешного запроса"); }).fail(function(message) { alert('ошибка..') }); }; this.load=function(teamId){ var dfr = $.Deferred(); alert('посылаем запрос'); $.ajax({ url: 'load/check_production.php', success: function(response, status, jqXHR){ dfr.resolve();}, error: function(jqXHR, status, error) { dfr.reject() ; } }); return dfr; //dfr.promise(); }; this.init(); }; Также существует ряд библиотек-оберток для этого объекта, мне в свое время приглянулась JSDeferred: http://habrahabr.ru/post/108575/

Комментариев нет:

Отправить комментарий