Javascript 类似Gmail的URL方案

Javascript 类似Gmail的URL方案,javascript,ajax,pageload,Javascript,Ajax,Pageload,我在一个票务系统上工作,有以下要求: 主页分为两部分: 第1节。这里显示了一些筛选选项(如关闭的票证、打开的票证、所有票证、分配给我的票证等)。您可以选择一个或多个过滤器。 第二节。满足上述筛选条件的票证列表将显示在此处 现在这就是我想要的:当我更改过滤器时 -->更改应反映在URL中,以便可以将其添加到书签中。 -->ajax请求将发出,满足所选过滤器的票证列表将在第2节中更新 我希望使用相同的代码以两种方式加载票据- (a) 通过选择该组过滤器和 (b) 通过使用书签重新加载页面 我不知道怎

我在一个票务系统上工作,有以下要求:
主页分为两部分:
第1节。这里显示了一些筛选选项(如关闭的票证、打开的票证、所有票证、分配给我的票证等)。您可以选择一个或多个过滤器。
第二节。满足上述筛选条件的票证列表将显示在此处

现在这就是我想要的:当我更改过滤器时
-->更改应反映在URL中,以便可以将其添加到书签中。
-->ajax请求将发出,满足所选过滤器的票证列表将在第2节中更新

我希望使用相同的代码以两种方式加载票据-
(a) 通过选择该组过滤器和
(b) 通过使用书签重新加载页面

我不知道怎么做:
URL将包含所选筛选器。(附加在#)之后
更改页面上的筛选器将修改URL的哈希部分,并调用函数(比如ajaxHandler())解析URL以获取筛选器,然后发出ajax请求以获取要在第2节中显示的票证列表。

我将在window.onload中调用相同的函数ajaxHandler()。
我觉得这就是我所做的

实现这种URL方案的最佳方式是什么?
我朝着正确的方向前进了吗?

是的——你正朝着正确的方向前进,而且在所有浏览器和操作系统中都有大量的工作要做。最难做到的一点是,当您使用#urlfragment语法时,浏览器的后退和前进按钮能够正常工作


一个为这样的事情提供支持的库:

我发现google wave应用程序的解决方案非常优雅。它基本上就是您使用可解析url片段描述的内容。像这样:

使用yui历史库是sblom评论中提到的一个选项。 如果您不想处理跨浏览器兼容性问题,您可能需要考虑只在页面上提供书签或链接按钮,用户可以单击该按钮以获得URK。p> 我们在这里做
地图顶部有一个链接。

这是一个简单的答案,但您想了解的是,在AJAX中使用隐藏的iframe方法,而不是XHR(XMLHttpRequest对象)。这将允许浏览器维护历史记录,因此“后退”按钮将继续工作


更多信息:

如果您使用jQuery,Asual提供了一个可爱的库:用于深度链接。他们有很好的API参考资料和示例。它将为您提供实现应用程序所需的所有工具。

在Chrome、Safari和Firefox中,您可以使用HTML5
history.pushState
history.replaceState()
方法


一些文档和.

为此构建了一个功能齐全的jQuery插件,名为。依我看,它比地址插件好得多。

Gmail就是使用这个插件的服务之一。还有其他的例子吗?我现在用这个。谢谢