如何刷新位置。 javascript当位置有目标?

时间:2013-08-04 00:39:50

标签: javascript jquery ajax

这与How can I refresh a page with 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更改之前调用重新加载,并且我重新加载旧页面,而不是新目标。< / p>

Blurgh。有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:2)

一种方法是检查window.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
      }
   }),

答案 1 :(得分:0)

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