Javascript window.location.replace在重新加载同一页面时不工作
我试图刷新关于Ajax成功的页面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例如,我的浏览
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
和focusid=“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();