2016-05-19 3 views
0

Я использую событие click, чтобы захватить некоторые данные, запросить удаленный сервер и затем отобразить результаты.Jquery Delay alert до тех пор, пока .ajax не вернул

Проблема заключается в представлении предупреждения о результатах, до завершения запроса .ajax. Любой способ отложить оповещение до тех пор, пока результаты не будут доступны?

Это то, что я до сих пор ..

$(".img").click(function(e){ 
     e.preventDefault(); 
     var data = $(this).attr("data") 
     var info = data.split(','); 
     var query = ''; 

     $.ajax({ url : 'http://DOMAIN/' + info[5], 
      success: function(response) { 
       console.log (response); 
       query= response; 
      } 
     }); 

     alert(info[0] + ' ' + info[1] + ' ' + query); 
    }); 

Благодаря

+0

Вы могли бы попытаться использовать события $ .ajax, такие как beforeSend: function() {} или complete: function() {} –

+1

@ Frédé ric Hamidi, хотя этот вопрос имеет тот же самый ответ, что и ваш «дубликат», это совершенно другой вопрос ... это не спрашивает, как вернуть ответ, он спрашивает, как можно отложить изменение до тех пор, пока это не произойдет. – patrick

+0

@patrick, если вопрос имеет * точный ответ * как другой, то это дубликат. В этом конкретном случае он запрашивает, как отложить оповещение * до тех пор, пока запрос AJAX не будет завершен *, который является точно точкой, адресованной дубликатом ('query' должен быть назначен перед вызовом' alert() '). –

ответ

1

Попробуйте это:

$(".img").click(function(e){ 
     e.preventDefault(); 
     var data = $(this).attr("data") 
     var info = data.split(','); 
     var query = ''; 

     $.ajax({ 
      url : 'http://DOMAIN/' + info[5] 
     }).done(function(){ 
      alert(info[0] + ' ' + info[1] + ' ' + query); 
     }); 
    }); 

... или же переместить оповещение внутри функции 'успеха'

+0

Спасибо за это. Пара небольших изменений, и это хорошо работает. – MacMan

Смежные вопросы