Ваш код в основном правильный, вы пытаетесь сделать синхронный вызов, поэтому код после вызова ajax должен выполняться только после возврата вызова ajax. Но у вас есть одна маленькая ошибка там. Попробуйте это:
async: false
Использование "false"
равно true
, так как это строка ненулевой длины, поэтому у вас будет асинхронный вызов, а загрузчик будет скрыт сразу после вызова ajax & ndash; он не будет ждать завершения вызова.
Кроме того, вам не нужно заключать в кавычки ключи, поэтому этот стиль также будет работать:
$.ajax({
async: false,
type: "POST",
url: "http://url/feedback/",
....
Но зачем вам вообще нужен синхронный вызов? Выполнение синхронного вызова приведет к зависанию всех других процессов на время вызова, поэтому это может отвлекать внимание. Если вы покажете элемент загрузчика перед вызовом ajax, а затем снова закроете его в обработчике success
, он должен работать нормально:
$("#addk").click(function(event) {
$("#loader-overlay").show();
$.ajax({
type: 'POST',
url: 'http://url/feedback/',
data: $("#form").serialize(),
success: function(msg){
$("#errors").html(msg);
$("#loader-overlay").hide();
},
error: function() {
$("#errors").html('<p>fail</p>');
}
});
return false;
});