これは「jQuery を使用してページを更新するにはどうすればよいですか?」と似ていますが、同じではありません。:
ユーザーからいくつかのものを収集し、呼び出しを介してサーバーに渡すモーダル フォームを表示し$.ajax()ます。window.locationサーバーは、ブラウザーの新しいパスになるはずのパスを返信します。したがって、ajax 呼び出しは次のようになります。
$.ajax({
// stuff
success: function (destination) {
// other stuff
window.location = destination;
}),
// still more stuff
});
ブラウザが現在そのページにない場合など、destination純粋なパスである限り、これは正常に機能します。ただし、パスが現在表示しているページであり、ターゲット -- も含まれている場合、私は負けます。ブラウザは、指定されたターゲットにページを再配置するだけで、ページの新しいビューのためにサーバーにアクセスしません。これが必要です(サーバーがajax呼び出し中にいくつかのことを行ったため)。/some_path /some_path#some_target
それで、多分私は呼び出しのlocation.reload()後に追加するだけですか?window.locationコードが返されるページでコードが実行されている場合、それはうまくいくと思います。しかし、別のページにいる場合、ブラウザが変更を完了する前にリロードが呼び出される競合状態に陥り、window.location新しい宛先ではなく古いページがリロードされます。
ブラッフ。これを回避する方法はありますか?