Javascript window.location.replace在重新加载同一页面时不工作

Javascript window.location.replace在重新加载同一页面时不工作,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我试图刷新关于Ajax成功的页面 var lastId = "#" + id; window.location.replace("/myurl" + lastId); 它正在将正确的URL写入我的浏览器,但我看不到所做的更改。如果我刷新(F5)页面,我会正确地看到更改,因为ajax发送正确 因此,我认为如果url相同,页面将不会强制刷新 在这个例子中,我已经在http://mypage.com/myurl,支持将我重定向到http://mypage.com/myurl#38174例如,我的浏览

我试图刷新关于Ajax成功的页面

var lastId = "#" + id;
window.location.replace("/myurl" + lastId);
它正在将正确的URL写入我的浏览器,但我看不到所做的更改。如果我刷新(F5)页面,我会正确地看到更改,因为ajax发送正确

因此,我认为如果url相同,页面将不会强制刷新

在这个例子中,我已经在
http://mypage.com/myurl
,支持将我重定向到
http://mypage.com/myurl#38174
例如,我的浏览器将使用
id=“38174”
聚焦DOM元素

正如我所说,如果我提交ajax请求,我的url将更改为
http://mypage.com/myurl#38174
和focus
id=“38174”
但我在我的数据库中看不到对该元素所做的更改,如果我点击F5,它将聚焦同一元素,但正确显示更改

为什么会这样

我还尝试了
window.location.href
window.location
,但没有成功

如果我使用
window.location.replace('http://stackoverflow.com');它正确地将我发送到此网站

所以我认为问题是当替换为相同的url+一些标签时。。。也许吧


正如我所说的,在这种情况下,我们尤其需要在AJAX请求成功后进行刷新,是的,这听起来很奇怪,而且会适得其反,但这是必需的

从URL更新哈希不会触发新的页面加载

您需要在javascript中监听hashchange事件来启动ajax调用,而无需刷新页面。这将为您提供更好的用户体验

如果使用jQuery,则可以使用以下内容:

$(window).on('hashchange',function(){ 
    //Do ajax call here
});

正如您所看到的,更新URL片段不会导致页面重新加载。您需要更改片段,然后手动调用
window.location.reload()
,然而这使得提出AJAX请求的意义变得毫无意义。一般的想法是您发出AJAX请求,该请求更新您的数据存储,然后传回足够的信息,以便UI进行自我更新?这似乎与ajax调用应该实现的目标相反使用ajax的目的不是不需要重新加载吗?是的,ajax的目的是不需要重新加载,但在这种情况下,我们尤其需要在一切正常的情况下重新加载,因为我们使用的是AngularJS,我们不能用检索到的数据替换HTML内容,因为我们使用的是带有细枝的、历史悠久的静态内容,但在这种情况下,我们尤其需要重新加载。@Rorymcrossan我需要找到另一种方法,因为片段总是一样的…这将如何帮助在ajax请求完成后重新加载页面?如果他使用这种方法,基于他声明的意图,他不会将ajax调用放在那里,他会放
window.location.reload()
var lastId = "#" + id;
window.location.replace("/myurl" + lastId);
window.location.reload();