【问题标题】:Refresh page using javascript not working使用javascript刷新页面不起作用
【发布时间】:2011-11-30 11:26:28
【问题描述】:



我向服务器发送一个发布请求,服务器又返回一个 JSP。现在,如果我使用浏览器的刷新按钮,我会确认重新提交数据,然后页面重新加载成功。

但是,当我尝试使用 javascript 刷新页面时,我没有得到任何确认框,并且重新加载也不起作用。我已经尝试了所有重新加载的方法,例如:

  • location.reload()
  • window.location.reload()
  • window.location.href = window.location.href
  • history.go(0);

我认为问题在于当我尝试使用 javascript 刷新时它发送了一个 get 请求,并且它无法找到必要的参数。

这个问题只在 chrome 中出现...它在 Firefox 和 IE 中有效!!

【问题讨论】:

标签: javascript google-chrome post


【解决方案1】:

为了通过发布请求“刷新”页面,您需要提交一个表单。您可以使用页面上已有的任何表单,或以编程方式创建一个。

var myForm = document.createElement("form");
myForm.action = "/my/url.jsp"; // Or use window.location, or something else.
myForm.method = "POST";
document.body.appendChild(myForm); // Needs to be in the DOM. Is not visible.
myForm.submit();

【讨论】:

  • 问题是这样的:我在第 1 页提交了一个表单。它带我到第 2 页。现在当我在第 2 页时,如果我点击浏览器的重新加载,那么第 2 页刷新成功(在获取确认)。但是,如果我在第 2 页上放了这个:<a href="javascript:history.go(0);">Reload</a>,并且如果我点击它,那么我无法重新加载页面,因为它不会发送 page1 表单的必要参数。我的问题是是否可以实现与浏览器的重新加载按钮相同的功能?
【解决方案2】:

reload 方法可以使用缓存重新加载页面。指定 force 参数使其从服务器获取页面:

window.location.reload(true);

【讨论】:

  • 感谢您的解释!
  • 强制参数已弃用
【解决方案3】:
parent.window.location.reload(true);

为我在 chrome 上工作......终于

解释:parent.window

对当前窗口或子框架的父级的引用。

如果窗口没有父级,则其父级属性是对自身的引用。

当一个窗口被加载到 、 或 中时,它的父窗口是带有嵌入该窗口的元素的窗口。

【讨论】:

    【解决方案4】:

    唯一的解决方案是使用一些附加值调用相同的 URL。

    这是常规的重新加载脚本,在 IE 和 FF 上可以正常工作,但在 Chrome 和 Safari 上不行。

    window.location = location.href; 
    

    要在所有浏览器类型上重新加载工作,请使用:

    window.location = location.href + '?session=' + sMath.floor((Math.random() * 1000000) + 1);
    

    在 IE、FF、Chrome 和 Safari 上测试。

    【讨论】:

    • 向页面链接添加随机键应该可以解决问题。关键是在页面链接更改之前浏览器不会重新加载。
    【解决方案5】:

    我尝试了所有可能的解决方案(ajax 调用,各种 sn-ps),但唯一对我有用的是从 chrome 中禁用网络缓存,请参阅此处Why isn't Google Chrome reloading my scripts? 我不认为它是生产解决方案,但在开发过程中可以节省您一些时间进行搜索。问题似乎出在 chrome 的缓存甚至设置上

    window.location.reload(true);
    

    在重新加载时不清除缓存。在 FF 上工作正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      • 2015-02-16
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多