【发布时间】:2014-10-02 11:40:30
【问题描述】:
我们使用 Ajax 将更新发布到表单,服务器获取该 POST,将更改应用到数据库,然后将客户端浏览器重定向到下一个表单页面(想想向导)。
该页面的 302 和 GET 由 Ajax 自动处理,因此我们从服务器发回 Json 响应,其中不仅包括新页面(表单)的 HTML,还包括新页面的位置/URL。然后在 ajaxSuccess 回调中调用 history.pushState 来更新 URL 和浏览器历史记录。现在,所有这些都很好,但是有一个问题。使用 Fiddler 和 Chrome(最新)和 IE(最新)开发工具,我们可以看到,每当我们调用 history.pushState 时,实际上会导致对同一页面的另一个请求被执行。我们在 FireFox(最新)上看不到这个。
这里是代码。 that.ajaxSuccess = 函数(数据,状态,xhr){ history.pushState(null, '', data.Location.toLowerCase());
我没想到 history.pushState 会强制浏览器对服务器进行刷新/请求,所以这真的让我措手不及。
有没有人见过这个或者知道这里发生了什么。我认为我们一定是做错了什么,因为我确信这对其他人来说是一个大问题,坦率地说,我在网上没有看到任何表明这个问题很常见的东西。
我真的很感谢这里的一些帮助。出于多种原因,这显然是一笔巨大的交易......
【问题讨论】:
标签: jquery ajax asp.net-mvc html browser-history