如何使用jQuery刷新页面?

如何使用jQuery刷新页面?

使用location.reload()

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

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

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

 location.reload(); 

多种无限制的方法可以用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来传递。

您可以继续创建列表:

  • window.location = window.location
  • window.self.window.self.window.window.location = window.location
  • …和其他534种方式
 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> 

我猜想有很多方法可行:

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

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

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

我使用的方法是Ajax jQuery。 我在Chrome 13上进行了测试。然后我将代码放在处理程序中,以触发重新加载。 URL是"" ,表示这个页面

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

 window.location = window.location.pathname; 

代替

 window.location.reload(); 

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

这个问题应该是,

如何使用JavaScript刷新页面

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

你被宠坏了选择。

你可能想要使用

 location.reload(forceGet) 

forceGet是一个布尔和可选的。

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

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

要不就

 location.reload() 

如果你想快速和容易的缓存。

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

  • location.reload(true)

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

    等同于用户在可能的浏览器中进行“硬重新加载”。

    请注意,在Firefox(请参阅MDN )和Internet Explorer(请参阅MSDN )中支持将true传递给location.reload()但不支持通用方式,也不是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允许浏览器服务他们没有revalidation。

    确切地说,浏览器在执行location.reload()调用时应该如何使用它的缓存没有被指定或记录,据我所知; 我通过实验确定了上面的行为。

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

  • location = location (或涉及分配给location或其属性的无数其他可能的技术)

    只有当页面的URL不包含fragid / hashbang时才有效!

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

    这相当于(从缓存的角度)到在新标签中打开页面的用户。

    但是,如果页面的URL包含散列,则这将不起作用。

    同样,据我所知,这里的缓存行为是不确定的。 我通过测试来确定它。

所以,总之,你想使用:

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

你可以通过window.location.reload();来执行这个任务而不使用jQuery window.location.reload(); 由于有很多方法可以做到这一点,但我认为这是用JavaScript重新载入相同的docuemnt的适当方式。 这是解释

可以使用Javascript的window.location对象

  • 获取当前页面地址(URL)。
  • 将浏览器重定向到其他页面。
  • 重新加载相同的页面。

窗口 – java-script中的窗口对象表示浏览器中的打开窗口。

位置 – java脚本中的位置对象保存有关当前URL的信息。

位置对象就像窗口对象的一个​​片段,通过window.location属性被调用。

位置对象有三个方法 –

  1. assign()用于加载新文档
  2. reload()用于重新加载当前文档。
  3. replace()用于用新的替换当前文档

所以在这里我们需要使用reload(),因为它可以帮助我们重新加载相同的文档。

所以使用它像window.location.reload();

在线演示jsfiddle

要让浏览器直接从服务器中检索页面,而不是从缓存中检索,可以传递一个true参数给location.reload():

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

所以,如果你只是想刷新HTML, window.location = document.URL将返回更快,更少的流量。 但是如果URL中有一个散列(#),它将不会重新加载页面。

jQuery Load函数也可以执行页面刷新:

 $('body').load('views/file.html', function () { $(this).fadeIn(5000); }); 

这是一个使用jQuery异步重载页面的解决方案。 它避免了由window.location = window.location引起的闪烁。 此示例显示了一个连续重新加载的页面,如在仪表板中。 在时代广场的信息显示电视上进行了战斗测试。

 <!DOCTYPE html> <html lang="en"> <head> ... <meta http-equiv="refresh" content="300"> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script> <script> function refresh() { $.ajax({ url: "", dataType: "text", success: function(html) { $('#fu').replaceWith($.parseHTML(html)); setTimeout(refresh,2000); } }); } refresh(); </script> </head> <body> <div id="fu"> ... </div> </body> </html> 

笔记:

  • 即使使用cache: true ,直接使用$.ajax $.get('',function(data){$(document.body).html(data)})$.get('',function(data){$(document.body).html(data)})也会导致css / js文件缓存失败 。这就是为什么我们使用parseHTML
  • parseHTML将不会找到一个body标记,所以你的整个身体需要在一个额外的div,我希望这个知识的金块可以帮助你有一天,你可以猜测我们如何选择该div的id
  • 使用http-equiv="refresh" ,以防万一javascript /服务器打嗝发生错误,那么页面仍然会重新加载,而不会收到电话
  • 这种方法可能会泄漏内存, http-equiv刷新修复

由于这个问题是通用的,我们试着总结一下可能的解决方案:

简单的JavaScript解决方案

最简单的方法是以适当的方式放置一行解决方案:

 location.reload(); 

有很多人在这里失踪,因为他们希望得到一些“积分”,reload()函数本身提供了一个布尔值作为参数(详细信息: https : //developer.mozilla.org/en-US/docs/Web / API /位置/重新加载 )。

Location.reload()方法从当前URL重新加载资源。 其可选的唯一参数是一个布尔值,当它为true时,会使页面始终从服务器重新加载。 如果为false或未指定,则浏览器可能会从其缓存中重新加载页面。

这意味着有两种方式:

解决方案1: 强制从服务器重新加载当前页面

 location.reload(true); 

解决方案2: 从缓存或服务器重新加载(基于浏览器和您的配置)

 location.reload(false); location.reload(); 

如果你想把它和jQuery结合起来听一个事件,我会建议使用“.on()”方法而不是“.click”或其他事件包装器,比如更合适的解决方案是:

 $('#reloadIt').on('eventXyZ', function() { location.reload(true); }); 

我发现

 window.location.href = ""; 

要么

 window.location.href = null; 

也使页面更新。

这使得重新加载删除任何散列的页面变得非常容易。 当我在iOS模拟器中使用AngularJS时,这是非常好的,所以我不必重新运行应用程序。