HTML5历史/状态API、AJAX、PHP重定向、URL更改

HTML5历史/状态API、AJAX、PHP重定向、URL更改,php,ajax,url-redirection,html5-history,Php,Ajax,Url Redirection,Html5 History,我的站点使用History.js HTML5历史/状态API(pushState、statechange事件等),并通过AJAX(jQuery)将页面加载到My.content div中 在我执行URL重定向服务器端(CakePHP$this->redirect($URL);)之前,一切正常。我重定向到的页面的内容更新很好,但我想在历史记录中添加一个新状态 我该怎么做?是否有一种方法可以检查AJAX响应以了解请求是否被重定向,或者是否应该从另一个方向处理问题 示例 管理博客文章列表/帖子/索引

我的站点使用History.js HTML5历史/状态API(pushState、statechange事件等),并通过AJAX(jQuery)将页面加载到My.content div中

在我执行URL重定向服务器端(CakePHP$this->redirect($URL);)之前,一切正常。我重定向到的页面的内容更新很好,但我想在历史记录中添加一个新状态

我该怎么做?是否有一种方法可以检查AJAX响应以了解请求是否被重定向,或者是否应该从另一个方向处理问题

示例

管理博客文章列表/帖子/索引
用户选择一篇文章/发布/打开/13
用户单击“删除帖子”/posts/Delete/13

从DB中删除后,请求被重定向到列表,但地址栏仍然是/posts/delete/13
我想用历史记录(/posts/index)的新URL替换当前状态(/posts/delete/13)。但是我怎么知道AJAX请求是否被重定向了呢?

我想出了一个(IMO)临时解决方案

服务器端重定向:检查请求是否异步。如果是,则不要重定向,而是将“重定向到”标题添加到响应并发送它(正文为空)。客户端检查响应是否具有标头。如果是,则执行replaceState并对收到的“重定向到”url进行新的ajax调用


您对此有何看法?

您希望在历史记录中添加什么内容?原始问题已更新,并提供了一个示例。感谢you@rhinoeli服务器端脚本是否返回JSON编码的响应?例如,
{status:200,url:'/posts/index'}
@MarkusHofmann不,响应是纯html。您是否想出了其他解决方案?你的似乎是一个很好的出路,但是,你必须承认,这是一个有点黑客:)是的,这显然是一个黑客。我改了一点。我没有根据头发出新的ajax请求,而是在重定向服务器端检查结果头是否有正确的URL,如果不相同,则更改状态。这仍然是一个黑客攻击,但我不必为简单的重定向而使用客户端代码执行新的http请求。没错!我是这样做的。我没有找到更好的解决办法。更新你的答案,说明真正的答案在评论部分。然后,接受它。