AJAX формы отправить уведомление JQuery
У меня есть форма, которую я отправляю через jquery ajax. Я пытаюсь добиться следующего: перед отправкой формы должно быть отправлено уведомление, а после завершения запроса это сообщение должно исчезнуть, и должно быть сообщение "отправлено". Я использую pnotify. Что я пробовал до сих пор:
inProcess = function(){
m = $.pnotify({
title: "sending"
});
return true;
}
event.preventDefault();
$.ajax('',{
method: "POST",
data: myform.serialize,
beforeSend: inProcess,
complete: function(response){
$.pnotify({
title: "Sent",
type: "success",
opacity: "0.8",
delay: 5000
});
m.remove();
}
});
Этот не работает:
- По любой причине "отправлено" появляется перед отправкой. Зачем?
- Функция remove() удаляет уведомление перед его созданием, но оно не удаляется полностью, можно увидеть, что "отправляющее" уведомление смещено вниз. Как я могу полностью удалить уведомление?
- Нужно ли мне оборачивать вызов "send" внутри функции только потому, что
beforeSend
требуетtrue
как код возврата? Или есть более элегантный способ? Особенно мне не нравятся глобальныеm
переменная
Редактировать:
Согласно некоторым комментариям и Google, я изменил свой код на:
inProcess = function(){
m = $.pnotify({
title: "sending"
});
return true;
}
event.preventDefault();
$.ajax('',{
method: "POST",
data: myform.serialize,
beforeSend: inProcess,
complete: setTimeout(function(response){
$.pnotify({
title: "Sent",
type: "success",
opacity: "0.8",
delay: 5000
});
$.pnotify_remove_all(),1000)
}
});
Что, кажется, работает, но не совсем удовлетворительно из-за вопросов выше
1 ответ
Мне проще следующий путь. может помочь:
inProcess();
$.post(
'file.php',
{
data: myform.serialize
},
function(response)
{
success(response);
$.pnotify({
title: "Sent",
type: "success",
opacity: "0.8",
delay: 5000
});
},'json'
)
.always(function() { m.remove(); }
);