题 如何使用jQuery刷新页面?


如何使用jQuery刷新页面?


2049
2018-03-23 11:55


起源


由于jQuery是一个简单的DOM操作和事件绑定的javascript框架,我建议你要求javascript而不是jQuery。 - WoIIe
你不需要jQuery。 - Stardust
比以往更有意义: needsmorejquery.com - K_7


答案:


使用 location.reload()

$('#something').click(function() {
    location.reload();
});

reload() function接受可设置的可选参数 true 强制从服务器而不是缓存重新加载。参数默认为 false,因此默认情况下,页面可能会从浏览器的缓存中重新加载。


3321
2018-03-23 11:57



这对我不起作用。这有效:window.location.href = window.location.href; - Yster
这对我不起作用。 window.location.href=window.location.href; 和 location.href=location.href; 工作。 - Travis
window.location.reload(true); 将刷新,否则默认情况下是假的 - Sagar Naliyapara
这是有效的,但它有一点延迟 - mindmyweb
@Sagar N,这个也适合我。谢谢。过去几天我用不同的方法努力尝试但是你的解决方案救了我。 - Ludus H


即使没有jQuery,这应该适用于所有浏览器:

location.reload();

410
2018-03-23 11:57





 使用JavaScript刷新页面的无限方法:

  1. location.reload()
  2. history.go(0)
  3. location.href = location.href
  4. location.href = location.pathname
  5. location.replace(location.pathname)
  6. location.reload(false) 

    如果我们需要从中提取文档    再次使用Web服务器(例如文档内容所在的位置)    动态改变)我们将参数传递为 true

您可以继续创作列表:

var methods = [
  "location.reload()",
  "history.go(0)",
  "location.href = location.href",
  "location.href = location.pathname",
  "location.replace(location.pathname)",
  "location.reload(false)"
];

var $body = $("body");
for (var i = 0; i < methods.length; ++i) {
  (function(cMethod) {
    $body.append($("<button>", {
      text: cMethod
    }).on("click", function() {
      eval(cMethod); // don't blame me for using eval
    }));
  })(methods[i]);
}
button {
  background: #2ecc71;
  border: 0;
  color: white;
  font-weight: bold;
  font-family: "Monaco", monospace;
  padding: 10px;
  border-radius: 4px;
  cursor: pointer;
  transition: background-color 0.5s ease;
  margin: 2px;
}
button:hover {
  background: #27ae60;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


345
2018-06-23 09:47



+1列表和jsfiddle。我有一个问题,在jsfiddle 1和6中,生成的页面在重新加载时会消失一段时间,并且2-5使页面重新加载“不明显”。在chrome中的开发工具中,我可以看到正在重新生成的页面,但是你能解释重绘过程是不同的吗?请。先谢谢你。 - Cԃաԃ
@Cԃաԃ我看到没有区别......也许缓存是问题?我很快就会看一看。 - Ionică Bizău
1和6 (reload()/(false)) 比较慢嗯。有趣。 :)和1和6是一样的 reload()的默认参数是 false。 - Cԃաԃ
location.href = location.href 是我通常使用的,但感谢其他人。很有用! +1 - Amal Murali
@Cԃաԃ最后我可以重现你所看到的和我问的 这里。 - Ionică Bizău


我想有很多方法可行:

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

183
2018-03-23 11:58



这个 window.location.href=window.location.href; 会做 没有 如果您的网址末尾有#/ hashbang example.com/something#blah: - AaronLS
如果有人想知道它们之间有什么区别 location.reload() 和 history.go(0) 是:没有。 HTML 5规范的相关部分 w3.org/TR/html5/browsers.html#dom-history-go 明确规定它们是等价的: “当。。。的时候 go(delta) 调用方法,如果方法的参数被省略或者值为零,则用户代理必须表现为 location.reload() 方法被调用了。“ - Mark Amery
唯一适合我的是这一个:window.location.href = window.location.href; - Yster


要使用jQuery重新加载页面,请执行以下操作:

$.ajax({
    url: "",
    context: document.body,
    success: function(s,x){
        $(this).html(s);
    }
});

我使用的方法是Ajax jQuery。我测试了它  13.然后我将代码放在将触发重新加载的处理程序中。该 网址 是 "", 意思是 这一页


114
2017-09-30 11:00



Downvoting。这并没有真正回答这个问题,而是展示了如何用Ajax响应替换页面的HTML。这与重新加载页面不同:例如,我现在处理的情况是,这不能解决原始问题。 - Marnen Laibow-Koser
像这样重新加载整个HTML的一个问题是必须手动调用onload / ready事件并减轻先前声明的变量的覆盖,这些变量在刷新后可能希望保留其状态。 - PassKit
除非你对你的代码非常小心 将 导致内存泄漏,您已经附加了事件处理程序,并且在替换它们附加的代码之前没有将它们分离。 - Daniel Llewellyn
我用它来每秒重新加载我们的仪表板,零闪烁!这是穷人的彗星/ json api。感谢@DanielLlewellyn等人。警告。 - William Entriken
一些人评论说这种方法对刷新页面的一部分很有用。事实并非如此。我觉得那些人误解了 context 的参数 $.ajax 并期望它以某种方式表现出某种魔力。它所做的一切都是 设置 this 回调函数的值。 Ajax到一个URL "" 将点击您当前所在的URL,从而通常加载完整的HTML(包括 <html> 和 <head> 和 <body>),这个答案中没有任何内容过滤掉你不想要的东西。 - Mark Amery


如果当前页面是由POST请求加载的,您可能想要使用

window.location = window.location.pathname;

代替

window.location.reload();

因为 window.location.reload() 如果在POST请求加载的页面上调用,将提示确认。


97
2018-06-22 11:58



但是这会丢失查询字符串,而window.location = window.location则不会 - mrmillsy
@mrmillsy window.location = window.location 然而,也是不完美的;如果当前URL中存在fragid(hashbang),它什么都不做。 - Mark Amery


问题应该是,

如何刷新页面 JavaScript的

window.location.href = window.location.href; //This is a possibility
window.location.reload(); //Another possiblity
history.go(0); //And another

你被宠坏了选择。


55
2018-03-23 12:01





你可能想用

location.reload(forceGet)

forceGet 是一个布尔值和可选的。

默认值为false,从缓存重新加载页面。

如果要强制浏览器从服务器获取页面以除去缓存,请将此参数设置为true。

要不就

location.reload()

如果你想快速轻松地进行缓存。


48
2017-07-25 14:27



MDN为此: developer.mozilla.org/en-US/docs/Web/API/Location/reload - Max Heiber


具有不同缓存相关行为的三种方法:

  • location.reload(true)

    在实现的 forcedReload 的参数 location.reload(),通过获取页​​面的新副本及其所有资源(脚本,样式表,图像等)来重新加载。不会服务 任何 来自缓存的资源 - 从服务器获取新的副本而不发送任何内容 if-modified-since 要么 if-none-match 请求中的标头。

    相当于用户在可能的浏览器中进行“硬重载”。

    注意通过 true 至 location.reload() 在Firefox中受支持(请参阅 MDN)和Internet Explorer(见 MSDN)但不是普遍支持,不是其中的一部分 W3 HTML 5规范,也不是 W3草案HTML 5.1规范,也不是 WHATWG HTML生活标准

    在不支持的浏览器中,例如Google Chrome, location.reload(true) 行为与...相同 location.reload()

  • location.reload() 要么 location.reload(false)

    重新加载页面,获取页面HTML本身的新的非缓存副本,然后执行 RFC 7234 对浏览器缓存的任何资源(如脚本)的重新验证请求, 即使他们是 新鲜 RFC 7234允许浏览器在没有重新验证的情况下为它们提供服务。

    确切地说,浏览器在执行时应如何利用其缓存 location.reload()据我所知,未指定或记录电话;我通过实验确定了上述行为。

    这相当于用户只需按下浏览器中的“刷新”按钮即可。

  • location = location (或涉及分配的无限多种其他可能的技术 location 或其财产)

    仅在页面的URL不包含fragid / hashbang时才有效!

    无需重新获取或重新验证即可重新加载页面 任何  新鲜 来自缓存的资源。如果页面的HTML本身是新鲜的,这将重新加载页面而根本不执行任何HTTP请求。

    这相当于(从缓存角度来看)用户在新选项卡中打开页面。

    但是,如果页面的URL包含哈希值,则无效。

    同样,据我所知,此处的缓存行为未指定;我通过测试确定了它。

总而言之,您想要使用:

  • location = location 为了最大限度地使用缓存, 只要 该页面的URL中没有哈希值,在这种情况下,这将不起作用
  • location.reload(true) 获取所有资源的新副本而不重新验证(虽然它不是普遍支持的,并且行为没有区别 location.reload() 在某些浏览器中,如Chrome)
  • location.reload() 忠实再现用户点击“刷新”按钮的效果。

28
2017-11-14 11:22



+1位置=位置;没有多少人似乎建议它虽然它比大多数提供的答案都短,唯一的缺点是它的可读性我想,而location.reload()更具语义性 - Brandito
@Brandito更重要的是, location = location 如果URL中有哈希值,则不起作用。对于任何使用fragid的网站 - 甚至是任何链接到某个页面的网站都可能会在网址中添加一个fragid的网站 - 这会让它破碎。 - Mark Amery


window.location.reload() 将从服务器重新加载,并将再次加载所有数据,脚本,图像等。

所以如果你只是想刷新HTML,那么 window.location = document.URL 将返回更快,流量更少。但如果URL中存在哈希(#),则不会重新加载页面。


20
2017-10-13 20:32



这种行为在Chrome中是真的,至少 - location.reload() 强制重新验证缓存的资源,即使没有参数,也是如此 window.location = document.URL 只要它们是新鲜的,就很乐意提供缓存资源而无需点击服务器。 - Mark Amery