1

目前,当用户访问以下 URL 时:

www.foo.com/details.hmtl#id=123

服务器返回“details.html”,然后在页面返回后执行客户端 Ajax 调用以加载 id=123 的项目的数据。它使用JQuery 的 BBQ 插件

有什么方法可以检索服务器上哈希标记之后的参数,以便在服务器最初返回页面时,可以返回包含id=123.

这是需要的,这样无论用户浏览器中是否打开了 Javascript,仍会显示详细信息。如果他们打开了 Javascript,他们可以通过单击网站上现有的按钮通过 Ajax 更改内容。

提前感谢所有帮助

编辑:

当前正在以下列方式返回页面:

id = self.request.get("id")
template_values= {'id': id}
path = os.path.join(os.path.dirname(__file__), 'details.html')
self.response.out.write(template.render(path, template_values))
4

3 回答 3

3

你不能这样做,因为浏览器只发送/details.html请求。

如果需要,可以使用参数,例如:第一次可以将用户发送到此页面/details.hmtl?id=123然后将用户的请求保存在会话值中,并将用户重定向到不带参数的真实页面然后使用 hash /details.hmtl#id=123获取当前用户的会话并呈现页面的内容。

这就是不使用 JS 的方法

问候无

于 2011-01-04T13:37:12.213 回答
0

除非您绕过它,否则浏览器永远不会将锚点 (#) 之后的部分发送到服务器。这是一种使用 cookie 的方法:http: //www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/

于 2011-01-04T13:37:38.017 回答
-1

你为什么用#来做这个?NiL 回答的第一部分是使用实际查询?相反,我会赞成。但是不要费心重定向到通用页面等。你想要一个页面上有关于 id 123 的信息,所以从服务器返回它!您正在积极选择将对 id 123 的页面的单个请求转换为请求通用响应特定请求特定响应周期,没有明显的原因,这是用户确实拥有 javascript 的正常情况!

一定要使用动态的东西并为第二个请求更改页面,但是到那时你已经知道用户有 javascript。对于第一个请求,坚持使用 ?id=123 并让他们完成页面。

为什么要让它复杂化并减慢它的速度?

于 2011-01-04T15:10:52.550 回答