11

我的网站有 AJAX 驱动的搜索,它使用深度链接。当用户点击链接时……</p>

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

…标签“Mac OS”和“review”应该已经在搜索表单中被选中,与“Mac OS”和“review”相关的文章应该出现在页面上。

我有以下情况,需要修复

  1. 用户点击链接http://example.com/articles#/?tags=Mac%20OS
  2. 在初始页面渲染期间,获取所有文章
  3. 在客户端,hash-part 被解析,并且只通过 AJAX 请求“Mac OS”相关的文章。
  4. 客户端接收“Mac OS”-文章并替换在步骤 2 获取的所有文章。它还将“Mac OS”标签标记为在搜索表单上选择。

这里的问题是重复的文章渲染,这对用户来说真的很糟糕。他查看所有文章,几秒钟后,它们将被“Mac OS”文章替换。

我需要有以下场景:

  1. 用户点击链接http://example.com/articles#/?tags=Mac%20OS
  2. 服务器解析hash-part并返回“Mac OS”相关文章
  3. 客户明白,“Mac OS”文章已经存在并且什么都不做。它只是将“Mac OS”标签标记为选中。

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

/?tags=Mac%20OS

我不能在?之后使用请求参数,因为我使用 AJAX 和深度链接。使用 ?-part,浏览器将被迫重新加载页面。我需要在不重新加载页面的情况下做任何事情。

您的帮助将不胜感激。

谢谢。

4

2 回答 2

17

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

于 2010-11-25T09:21:37.463 回答
2

@NickFitz 是正确的,但如果您必须发送#哈希/磅符号之后的任何内容,您可以使用表示#which is的 URL 编码字符%23

因此%23,之后发生的任何事情都%23将发送到服务器。如果您使用的是现代 Web 服务器,它们会自动识别%23#. 在 Ruby on Rails 中,Rack 为您完成了这项工作。

于 2014-09-03T09:20:23.023 回答