哈希标志后获取请求部分

我的网站采用AJAX驱动的搜索,使用深层链接。 当用户关注链接时……

http://example.com/articles#/?tags=Mac%20OS,review 

…标签“Mac OS”和“评论”应该已经在搜索表单中选择,并且应该在页面上显示与“Mac OS”和“评论”相关的文章。

我有以下情况,需要修复

  1. 用户可以访问http://example.com/articles#/?tags=Mac%20OS链接
  2. 在初始页面呈现期间,将获取所有文章
  3. 在客户端,解析散列部分,并且仅通过AJAX请求与“Mac OS”相关的文章。
  4. 客户端收到“Mac OS”文章并替换在步骤2中获取的所有文章。此外,它还在搜索表单上标记“Mac OS”标记。

这里的问题 – 重复的文章渲染,对用户来说看起来非常糟糕。 他查看了所有文章,几秒后,它们将被替换为“Mac OS” – 文章。

我需要有以下场景:

  1. 用户可以访问http://example.com/articles#/?tags=Mac%20OS链接
  2. 服务器解析散列部分并返回与“Mac OS”相关的文章
  3. 客户理解,“Mac OS” – 文章已经存在并且什么都不做。 它只是将“Mac OS”标记标记为已选中。

为此,我需要获取请求字符串的哈希部分:

 /?tags=Mac%20OS 

我之后不能使用请求参数,因为我使用AJAX和深层链接。 使用?-part,浏览器将被强制重新加载页面。 我需要做任何事情而无需重新加载页面。

非常感谢您的帮助。

谢谢。

散列后URL的一部分未发送到服务器,因此您无法在那里处理它。 您可以在创建Ajax请求的客户端代码中提取URL的该部分,并将其作为参数发送。

@NickFitz是正确的,但是如果你必须发送#hash / pound符号之后的任何内容,你可以使用代表#的URL编码字符,即%23

所以%23%23之后的任何内容都将被发送到服务器。 如果您使用的是现代Web服务器,他们会自动识别%23# 。 在Ruby on Rails中,Rack为您完成此任务。