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() 関数は、通知が作成される前に通知を削除しますが、完全には削除されません。「送信中」の通知が下にずれていることがわかります。通知を完全に削除するにはどうすればよいですか?
- 「送信」呼び出しを関数内にラップする必要があるのは、 as リターン コード
beforeSend
が必要なためだけですか?true
それとももっとエレガントな方法がありますか?m
特にグローバル変数が苦手
編集:
いくつかのコメントといくつかのグーグルによると、コードを次のように変更しました。
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)
}
});
これは機能しているように見えますが、上記の質問のために実際には満足のいくものではありません