使用 location.href 或 window.location.reload(true) 重新加载页面

21

我需要在ajax请求成功后重新加载页面。

我看到一些代码(不是我的),有两种方式:

success: function(obj) {
  //code
  location.href = location.href;
}
或者
success: function(obj) {
  //code
  window.location.reload(true);
}

行为上有什么不同吗?我知道 locationwindow.location 的区别,但在工作方面有什么区别吗?


2
window.location.reload(true);会从服务器重新加载页面,而不是从缓存中加载。window.location.reload();location.href = location.href;做的事情相同,除了window.location.reload()包括一个post。 - Kevin Kloet
2个回答

24

主要区别如下:

  

window.location.reload() 重新加载当前页面并包括 POST 数据,而 window.location.href='your url' 不包括 POST 数据。

此外,window.location.reload(true) 方法会从服务器重新加载页面。浏览器将跳过缓存。

例如,我看到您正在使用 AJAX 请求的 success 函数。

假设您有以下方法:

[OutputCache(Duration=600)]
public ActionResult Homepage(){
   //code here
   return View();
}

如果你在使用 window.location.href="location_URL",那么浏览器会缓存数据 600 秒,也就是10分钟。

另一方面,如果你使用 window.location.reload(true),那么浏览器将跳过缓存并从服务器重新加载页面。


4
如果URL中含有锚点(#),则window.location.href=window.location.href不会重新加载页面。 - adl
1
重要提示:location.reload()forceGet参数仅在Firefox中可用 - Venryx

1

以下是我的版本,使用上述代码作为Razor按钮处理程序:

private async Task  Reset()
{
    await js.InvokeVoidAsync("window.location.reload",true);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接