2017-03-28 2 views
-1

サブミットボタンがクリックされたページがあります。2秒間いくつかの通知メッセージが表示されたダイアログボックスを表示する必要があります.2秒後に別のページにリダイレクトする必要がありますロケーション。Settimeout()が同期的に動作しない

setTimeout(function(){ 
     $('#wrapper_dialog').dialog('close');     
           }, 2000); 
//after this popup closes,I need to redirect to another page 
window.location = "?load=parents/communication"; 

これを行うと、ダイアログが表示され、すぐにページが非同期的に次のページにつながります。

setTimeout(function(){ 
$('#wrapper_dialog').dialog('close');}, 2000).then(function(){ 
    window.location = "?load=parents/communication"; 
    }); 

これは機能しません。

+0

を参照してください。フォーム提出ですか? – elboletaire

答えて

2

setTimeoutは約束を返しません。数値を返します。したがって、then機能は利用できません。

だけsetTimeoutコールバック、ダイアログを閉じ呼び出しの後location割り当てを置く:

setTimeout(function(){ 
    $('#wrapper_dialog').dialog('close');     
    window.location = "?load=parents/communication"; 
}, 2000); 

それとも、ダイアログを閉じるときにアニメーションを持っている場合、のclose eventlocation割り当てを置きますダイアログ:

setTimeout(function(){ 
    $('#wrapper_dialog').dialog('close').on("dialogclose", function() { 
     window.location = "?load=parents/communication"; 
    });     
}, 2000); 

アニメーションが完了するまで、位置を変更するまで待機します。

1

他のページにリダイレクトしている場合は、ダイアログを閉じる必要はありませんが、サーバーから応答を得るには時間がかかります。とにかく:

setTimeout(function(){ 
    $('#wrapper_dialog').dialog('close'); 
    window.location = "?load=parents/communication"; 
},2000); 
0

は、ダイアログに近いイベントハンドラを渡す必要があります。

setTimeout(function(){ 
    $('#wrapper_dialog').dialog('close'); 
    $("#wrapper_dialog").on("dialogclose", function() { 
     window.location = "?load=parents/communication"; 
    }); 
}, 2000); 

はあなたに `)あなたは` false`を返したり `event.preventDefault(くださいdialog widget documentation

関連する問題