【问题标题】:Using windows.location.replace to refresh page not working with a hash in URL使用 windows.location.replace 刷新页面不适用于 URL 中的哈希
【发布时间】:2011-04-16 20:38:34
【问题描述】:

我有一个 AJAX 调用,它负责一些服务器端设置(我将它用于登录、语言切换等)。如果且仅当此调用实际上更改了服务器端设置,我想刷新当前页面(不重新发布 POST 表单数据,我们是否应该在 POST 之后立即在页面上)。 AJAX 回调中的一个简单 JS 会处理这个问题:

window.location.replace( window.location.toString() );

这很好,直到我开始使用锚。假设我的 URL 类似于 http://www.mysite.com/index/list#someplace,并且我执行上述以 window.location.replace 结尾的 ajax 调用,然后什么也没有发生。页面不会重新加载。目前在FF3.6和IE7上测试过。

【问题讨论】:

    标签: javascript location reload


    【解决方案1】:

    您是否尝试过:

    window.location.hash = ''; //if you want to reload with an empty hash
    window.location.reload(true); //reload the page and bypass the cache
    

    我们的网络应用使用单个网页,并且某些功能(货币、语言的更改...)可能会触发重新加载。

    如果你想防止一些重新发布,你可以使用 cookie 来防止服务器做双重工作。

    【讨论】:

    • 我正在尝试做类似的事情。不是一个网页,但我试图将我正在编写的应用程序压缩在几页中。触发页面重新加载的完全相同的事物(货币、语言、登录)。但是,如果我销毁散列,我可能会冒着用户最终看到与散列完全不同的页面的风险,目前,散列在布局中发挥重要作用(jquery 工具选项卡历史记录)。
    • 按下,快速进入,我想补充的是,我不知道如何使用cookie来防止重新发布和重新发布警报,但我会调查那,谢谢你的提示!
    • 如果你不使用window.location.hash = '',当你重新加载时哈希键仍然存在。
    • 嘿麦克风,很抱歉响应缓慢,正在处理其他一些事情。无论如何,但是如果我需要哈希保持原位怎么办?我目前通过使用带有 cookie 历史记录而不是基于哈希的历史记录的 jQuery UI 选项卡来解决它。这根本不是解决方案,只是一种解决方法。这个问题肯定会在项目稍后再次出现。
    • 忘了提一下,即使我遵循建议的代码,在 URL 中使用哈希,它仍然不会重新加载。无论如何,感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2011-03-15
    • 2021-08-01
    • 2018-07-21
    • 2010-11-26
    相关资源
    最近更新 更多