@sophiko

Как сделать код синхронным, при использовании Аякс?

Здравствуйте,
с аяксом почти не имела дела.
Помогите, пожалуйста, можно ли так сделать, код ниже :
В коде проверяются в инпуте валидность данных,
так как некоторые условия можно проверить без сервера, сначала проверяются они,
затем если условия соблюдены и нужно искать есть ли вообще такой код, происходит обращение
к серверу.
Поскольку это аякс, то он возвращает данные асинхронно (проверка по 3600 кодам это долго), первоначальная функция уже успела выполниться.
Можно ли как-то "подождать;" ответа аякса, в случае если был по нему вызов?
Как еще можно сделать в этом случае?

$('#promo_code').on('input', onInputPromo);

function onInputPromo(e){
         
            var code = $(this).val();

          //некие действия
            
            var isValid = checkPromoValidation (code); // получаем данные валиден или нет false/true
            

                
                if(!isValid) {
                    
                   //показываем ошибку
                    return;
                }else{
                     //действия в случае успеха
                }
               
           }

        };

function checkPromoValidation (code){
       var isValid = false;
        
            if(проверка не прошла) {
               
                return isValid ;
            }

            if(проверка не прошла) {
                     return isValid ;
            }
          
            //если прошли все проверки тогда уже проверяем на сервере

            ajaxPromo = $.ajax({
               type:"POST",
               url: "check-promo.php",
                data: {
                    'code': code
                }
             });


             ajaxPromo.done(function(data){
                   return data; 
                });

            
    };
  • Вопрос задан
  • 2249 просмотров
Пригласить эксперта
Ответы на вопрос 1
@hurgadan
добавьте свойство
async: false
к объекту который передаете в ajax()

api.jquery.com/jquery.ajax
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы