2016-09-07 5 views
1

ページをリフレッシュする前にajax結果メッセージを表示したいが、何か問題がある。jQueryを使用してページをリフレッシュする前にメッセージを表示

$.ajax({ 
    cache: false, 
    type: "POST", 
    url: "@(Url.RouteUrl("DummyRequest"))", 
    success: function (data) { 
     if (data.Success) { 
      $('#dummy-notification').text(data.Result).fadeIn("slow").delay(3000).fadeOut("slow"); 
      setInterval(function() { 
       location.reload(); 
      }, 5000); 
     } 
     else { 
      $('#dummy-notification').text(data.Result).fadeIn("slow").delay(3000).fadeOut("slow"); 
      /*setInterval(function() { 
       location.reload(); 
      }, 5000);*/ 
     } 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     $('#dummy-notification').text("Something went wrong.").fadeIn("slow").delay(3000).fadeOut("slow"); 
    } 
}); 

私のコードが他の状況にうまく働いている:私のコードは次のようです。試してみると、メッセージが表示され、5秒後にページがリロードされます。しかし、の場合、状況がオンの場合、ページはリロードされますが、メッセージは表示されません。

どうすればこの問題を解決できますか?

+0

コンソールエラー? –

+0

は 'setInterval'の代わりに' setTimeout'を使用します –

+0

コールバックとsetTimeoutを試しましたか? –

答えて

0

それはサーバーの応答時間によります。サーバーからの応答が遅く、正常に動作しない場合は、AJAX応答を待たなければならないので、ポップアップとリダイレクトを表示する必要があります。したがって、ajaxリクエストでajaxオプションasync: falseを使用してください。以下に述べるように

$.ajax({ 
    cache: false, 
    async: false, 
    type: "POST", 
    url: "@(Url.RouteUrl("DummyRequest"))", 
    success: function (data) { 
     if (data.Success) { 
      $('#dummy-notification').text(data.Result).fadeIn("slow").delay(3000).fadeOut("slow"); 
      setInterval(function() { 
       location.reload(); 
      }, 5000); 
     } 
     else { 
      $('#dummy-notification').text(data.Result).fadeIn("slow").delay(3000).fadeOut("slow"); 
      /*setInterval(function() { 
       location.reload(); 
      }, 5000);*/ 
     } 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     $('#dummy-notification').text("Something went wrong.").fadeIn("slow").delay(3000).fadeOut("slow"); 
    } 
}); 
+0

** async:false **問題を修正しました。非常にありがとう@HareshVidja。 – YSFKBDY

0

このような何か試してみてください:

$('#dummy-notification').text(data.Result).fadeIn("slow").delay(3000).fadeOut("slow", function() { 
    setTimeout(function() { 
     location.reload(); 
    }, 5000); 
}); 

違いはsetTimeout()が​​の実行が終了されるまで呼び出されないということです。

+0

どちらもうまくいきませんでした。 8秒後にページをリロードしますが、msgはありません。 – YSFKBDY

関連する問題