用于管理应用程序状态的JQuery Address的简单示例

Mat*_*gin 1 java jquery url-routing fragment-identifier playframework

我正在使用jQuery地址库来重写我的URL,具体取决于用户在页面中执行的操作.目的是允许用户为页面添加书签并稍后返回.页面永远不会刷新,因为所有服务器交互都是通过ajax完成的.

jQuery Address正在写这样的URL:

HTTP://本地主机:9000 /#/ U/scott_tiger

我需要在Play中设置路由,以便能够将该请求路由到适当的控制器.所以我设置了这个:

GET     /#/u/{username}                Controller.showUser
Run Code Online (Sandbox Code Playgroud)

但这不起作用,路由定义被忽略.我尝试过很多东西,例如试图逃避"#"并用一个我用Character.toString(35)填充的变量替换它.这些都不起作用.

有谁知道如何正确定义路由或获取jQuery地址不写"#".

编辑:"#"没有被发送到服务器做它.卫生署!好的,问题被修改了.

Jon*_*nas 9

号的#,之后的URL的一部分发送到服务器.所以你在服务器上的播放应用程序永远不会看到这样的URL.

HTML5解决方案

您需要使用JavaScript在客户端处理这些URL.在具有良好HTML5支持的现代浏览器中,您可以修改地址而无需重新加载页面.请参阅操作浏览器历史记录,了解如何为这些浏览器执行此操作.并查看我何时可以使用...来支持浏览器.

#-URLs

在Internet Explorer和其他浏览器的旧版本上,您需要使用#URL并使用JavaScript加载状态(例如,/u/scott_tiger在您的示例中获取用户页面).请参阅当用户使用JQuery访问哈希链接(#something)时如何运行JavaScript函数?如何在JavaScript中执行此操作.此外,如果用户使用#-URL 为页面添加书签,则需要重新加载状态.

另请参阅:Facebook中的shebang/hashbang(#!)和新的Twitter URL是什么?

JavaScript库

您可以使用JavaScript库来为您处理历史.js就是一个例子.像Backbone.js这样的大型框架也可以处理这个问题.


有谁知道我怎么能得到jQuery地址不写"#".

如果不编写#URL 的-part,则无法链接状态.因此,如果您为页面添加书签,则无法返回到例如Scott Tigers个人资料页面,因为该URL仅用于http://localhost:9000/您,而您将到达首页,而用户虽然会到达个人资料页面.