如何刷新位置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在页面中插入一些东西。谢谢——这最终起到了作用(在针对我的情况进行了一些调整之后)!