【问题标题】:JavaScript to reload the page as GET request将页面重新加载为 GET 请求的 JavaScript
【发布时间】:2010-11-16 13:20:27
【问题描述】:

我有一个看似简单的问题,但找不到答案。我有一个网页,它可能是由 POST 请求产生的,并且 URL 中可能有一个锚点 (#)。我想在 JavaScript 中以 GET 请求的形式重新加载此页面。所以它类似于this question,但我实际上想避免POST,而不仅仅是关于它的警告。

因此,例如,如果页面来自对“http://server/do/some?thing#”的 POST 请求,我想将 URL“http://server/do/some?thing”重新加载为 GET。如果我尝试

window.location.reload(true);

这会导致 IE 尝试 POST。如果我改为这样做:

window.location = window.location.href;

当 URL 有一个锚点时,这不起作用。我真的需要自己进行字符串操作以摆脱“#whatever”还是有更简单、“更好”的方法来做到这一点?

【问题讨论】:

  • “正确”的方式可能涉及不进行客户端页面刷新。
  • 确实,您能否提供更多有关该问题的背景信息,以便我们知道我们不会建议您做一些愚蠢的事情。

标签: javascript refresh


【解决方案1】:

到目前为止,我想出的最好的是:

function reloadAsGet()
{
    var loc = window.location;
    window.location = loc.protocol + '//' + loc.host + loc.pathname + loc.search;
}

【讨论】:

    【解决方案2】:

    尝试以下方法:

    location.replace(location.href)
    

    【讨论】:

    • 这在 Chrome 版本 47.0.2526.111(64 位)中对我不起作用
    【解决方案3】:

    你可以试试这个

    location=location.href
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
    最近更新 更多