2010-04-09 112 views
11

我正在开票制度,有以下要求:
主页分为两部分:
秒-1。这里显示了一些过滤器选项(如封闭式门票,开放式门票,全部门票,分配给我的门票等)。您可以选择一个或多个这些过滤器。
sec-2。在此显示满足上述过滤条件的门票列表。Gmail like URL scheme

现在这就是我想要的:当我更改过滤器
- >更改应该反映在URL中,以便能够为其添加书签。
- > ajax请求将会继续,满足所选过滤条件的门票列表将在秒-2中更新。

我想要使用的相同的代码来加载在车票二者ways-
的(a)通过选择组滤波器和
(b)通过利用所述书签来重新加载该页面。

我对如何做到这一点的想法:
的网址将包含选定的过滤器(#后附)
在页面上更换过滤器将修改URL的散列部和调用函数(比方说。 ajaxHandler())解析URL以获取过滤器,然后发出ajax请求以获取要在第2节中显示的票证列表。

我将在window.onload中调用相同的函数ajaxHandler()。

我觉得这是Yahoo maps所做的。

实施此类URL方案的最佳方式是什么?
我的方向是否正确?

+0

Gmail就是这样的一种服务。任何其他的例子? – Varun 2010-04-09 10:40:00

回答

7

是的 - 你的目标确实是正确的,直到所有的浏览器和操作系统都做了这么多的工作。当你使用#urlfragment语法时,最困难的部分之一是使浏览器的后退和前进按钮正常工作。

提供支持这样的事情库:http://developer.yahoo.com/yui/history/

+0

我正在使用http://www.asual.com/jquery/address/和它的魅力:) – Varun 2010-12-24 07:58:53

0

使用yui库的历史是一个选项,如sblom的评论中提到的选项。 如果您不想处理跨浏览器兼容性问题,您可能需要考虑只在页面上提供书签或链接按钮,用户可以点击该按钮访问urk。

我们在这里做的http://connect.garmin.com/explore#sortField=relevance&currentPage=1 Theres链接在地图的顶部。

1

这是一个简单的答案,但是你想要看的是为你的AJAX使用隐藏的iframe方法,而不是XHR(XMLHttpRequest对象)。这将允许浏览器保持历史记录,所以后退按钮将继续工作。

一些更多:http://ajaxpatterns.org/IFrame_Call

2

那么,如果你正在使用jQuery有一个由Asual这个可爱的图书馆:jQuery Address深层链接。他们有一个很好的API参考和例子。它会为您提供实现应用程序所需的所有工具。

+0

我现在正在使用这一个。谢谢。 – Varun 2010-12-24 07:59:55

0

在Chrome中,Safari和Firefox,你可以使用HTML5 history.pushStatehistory.replaceState()方法

有些文档herehere

1

Ben Alman已经为此构建了一个全功能的jQuery插件BBQ。国际海事组织,它比地址插件好多了。