Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何刷新位置w。当位置有目标时使用javascript?_Javascript_Jquery_Ajax - Fatal编程技术网

如何刷新位置w。当位置有目标时使用javascript?

如何刷新位置w。当位置有目标时使用javascript?,javascript,jquery,ajax,Javascript,Jquery,Ajax,这类似于但不同于: 我提出了一个模式表单,它从用户那里收集一些东西,并通过$.ajax()调用将其传递给服务器。服务器发回一个路径,该路径应成为浏览器的新窗口。位置。因此,ajax调用希望类似于: $.ajax({ // stuff success: function (destination) { // other stuff window.location = destination; }), // still more stuff });

这类似于但不同于:

我提出了一个模式表单,它从用户那里收集一些东西,并通过
$.ajax()
调用将其传递给服务器。服务器发回一个路径,该路径应成为浏览器的新
窗口。位置。因此,ajax调用希望类似于:

$.ajax({
   // stuff

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

   // still more stuff
});
只要
destination
是一个纯路径,如
/some_path
,并且浏览器当前不在该页面上,这就可以正常工作。但是,如果路径是我当前所在的页面,并且还包含一个目标--
/some_path\35; some_target
,那么我就输了:浏览器只需将页面重新定位到指定的目标,而不点击服务器以获得我需要的页面的新视图(因为服务器在ajax调用期间做了一些事情)

那么,也许我只是在
窗口.location
调用之后添加一个
location.reload()
?我认为,当代码在返回到的页面上运行时,这会起作用。但是如果我在另一个页面上,我会被一个竞争条件击中,在浏览器完成
窗口之前调用重载。位置改变,我会重新加载旧页面,而不是新的目标


模糊。有什么办法吗?

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

一种方法是检查
window.location.pathname
(这是没有
的路径)与成功回调中的
目的地
相同:

 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
      }
   }),

为什么你在这里使用Ajax而不是常规表单帖子?!表单中还有其他一些事情需要jquery在页面中插入一些东西。谢谢——这最终起到了作用(在针对我的情况进行了一些调整之后)!