質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

7036閲覧

javascript ajaxのサクセス時にメッセージを出した後リロードを行いたい

amaguri

総合スコア227

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/09/04 05:44

編集2017/09/04 05:55

ajaxのサクセス時にメッセージを表示させて
その後リロードを行いたいのですが
メッセージが表示の途中でリロードが起きてしまいます。

やりたいこととして
メッセージを表示させフェードアウト
その後リロード
を行う動きに変えたいのですが
どうすれば実装可能でしょうか??

現在のサクセス時のコード

success: function(data){ $("#message").fadeIn(300).delay(1000).fadeOut(300); }, complete: function() { location.reload(); }

追記

メッセージが表示の途中とは
メッセージを表示させフェードアウトが完了する前という意味です

今回の質問に特に影響はないと思いましたがajaxの全コードの追記になります。

$.ajax({ type: "POST", url: "//hogehoge/", data: { "checks":checks }, success: function(data){ $("#message").fadeIn(300).delay(1000).fadeOut(300); }, complete: function() { location.reload(); } });

完了というのは
記載させていただいてありますが
サクセス時の
・メッセージを表示させフェードアウトさせる。
・その後リロード

になります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/09/04 05:48 編集

ajax実行のコード全体を追記願います。また「メッセージが表示の途中」とは具体的にどのような状況でしょうか。「メッセージ表示完了」は何を以て「完了」とできますか?トリガーなどはあるのでしょうか。
amaguri

2017/09/04 05:57

ajax実行のコード全体を追記願いますとありましたが、質問の動きに影響ありましたでしょうか?以前質問と関係ないところはできるだけ減らして欲しいとの他者様からの回答もありましたので割合させていただきましたので次からは全部記載したいと思います
amaguri

2017/09/04 06:05 編集

また「メッセージが表示の途中」とは具体的にどのような状況でしょうか。「メッセージ表示完了」は何を以て「完了」とできますか?トリガーなどはあるのでしょうか。   こちらに関してはこちらの説明力が足りず申し訳ありません。わかっている前提で書いてしまったので他人から見てもわかりやすく書くこと意識したいと思います
guest

回答3

0

非同期が絡むのでwhenで処理してみてはいかがでしょうか?
今回はajaxは直接関係ないのでボタンを押させてみました

javascript

1<script> 2$(function(){ 3 $('input[type=button][value=test]').on('click',function(){ 4 $.when($("#message").fadeIn(1000).delay(1000).fadeOut(1000)).done(function(){ 5 alert("test"); 6 }); 7 }); 8}); 9</script> 10<div id="message" style="display:none">test</div> 11<input type="button" value="test">

投稿2017/09/04 05:52

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2017/09/04 06:17

delayとqueueはセットなのでdelayで処理するならqueueの方が 使いやすいと思います whenは汎用的な遅延処理まちです
amaguri

2017/09/04 06:19

解説ありがとうございます! queueの方で実装してみたいと思います。
guest

0

ベストアンサー

$("#message").fadeIn(300).delay(1000).fadeOut(300).queue(function() { location.reload(); });

コールバックに書いてみてはどうでしょうか?

投稿2017/09/04 05:52

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaguri

2017/09/04 06:04

コールバックで書いてみるというのはすごくイメージしやすかったです! 試してみたいと思います!
guest

0

success: function(data) { $("#message").fadeIn(300).delay(1000).fadeOut(300).queue(function() { location.reload(); }); }

いただいた回答より
このようにソースを変更し解決できました。
ありがとうございました。

投稿2017/09/04 06:22

amaguri

総合スコア227

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問