0

这与如何使用 jQuery 刷新页面?

我提出了一个模式表单,它从用户那里收集一些东西并通过$.ajax()调用将其传递给服务器。服务器发回一个应该成为window.location浏览器新路径的路径。所以 ajax 调用希望是这样的:

$.ajax({
   // stuff

   success: function (destination) {
      // other stuff
      window.location = destination;
   }),

   // still more stuff
});

只要destination是纯路径就可以正常工作,例如/some_path 并且如果浏览器当前不在该页面上。但是,如果路径我当前所在的页面并且还包含一个目标 -- /some_path#some_target,我会失败:浏览器只是将页面重新定位到指定的目标,但不会访问服务器以获得页面的全新视图,我需要的(因为服务器在 ajax 调用期间做了一些事情)。

那么,也许我只是location.reload()在通话后添加一个window.location?我认为,当代码在返回它的页面上运行时,这将起作用。但是如果我在另一个页面上,我会受到竞争条件的影响,在浏览器完成window.location更改之前调用重新加载,并且我重新加载了旧页面,而不是新目的地。

布鲁格。有没有办法解决?

4

2 回答 2

2

一种方法是检查(这是没有orwindow.location.pathname的路径)是否与您的成功回调中相同:#?destination

 success: function (destination) {
      // other stuff
      if (destination === window.location.pathname) {
          window.location.reload(); // reload if we are on the same page
      } else {
          window.location = destination; // otherwise, navigate to "other" page
      }
   }),
于 2013-08-04T00:53:24.453 回答
0

window.location.reload()使用 POST 数据重新加载当前页面,但window.location.href=window.location.href不包括 POST 数据。

于 2013-08-04T00:44:27.913 回答