【发布时间】:2015-11-23 16:06:14
【问题描述】:
我正在尝试刷新有关 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 并关注 id="38174" 但我没有看到我的数据库中对该元素所做的更改,如果我按 F5,它会关注相同的元素,但正确显示了更改。
为什么会这样?
我也尝试过使用window.location.href 和window.location,但没有成功。
如果我使用window.location.replace('http://stackoverflow.com');,它会正确地将我发送到该网站...
所以我认为问题在于用相同的 url + 一些主题标签替换时......也许?
正如我所说的,在这种情况下,特别是我们需要在 AJAX 请求成功后进行刷新,是的,这听起来很奇怪并且适得其反,但它是必要的。
【问题讨论】:
-
更新 URL 的片段不会导致页面重新加载 - 正如您所看到的。您需要更改片段,然后手动调用
window.location.reload(),但这使得发出 AJAX 请求的意义不大。一般的想法是您发出 AJAX 请求,该请求会更新您的数据存储,然后传回足够的信息以供 UI 自行更新。 -
为什么要强制重新加载 ajax 调用?这似乎与 ajax 调用应该完成的相反
-
用Ajax不就是不用重载吗?
-
是的,ajax 的重点是您不需要重新加载,但在这种情况下,特别是在一切正常的情况下,我们需要重新加载,因为我们使用的是 AngularJS,而我们不需要t/can't replace HTML content with the retrieved data, because we are using static content with TWIG, long history,但在这种情况下我们需要重新加载。
-
@RoryMcCrossan 我需要找到另一种方法,因为片段总是相同的......
标签: javascript php jquery html ajax