目前,当用户访问以下网址时:
www.foo.com/details.hmtl#id=123
服务器返回'details.html',然后在返回页面后执行客户端Ajax调用,以加载id = 123的项目的数据。它使用BBQ Plugin for JQuery
有没有办法检索服务器上的hashmark后面的参数,这样当服务器最初返回页面时,可以返回包含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))
答案 0 :(得分:3)
您不能这样做,因为浏览器只会发送 /details.html 来请求。
如果需要,可以使用参数 例如:您第一次可以将用户发送到此页 /details.hmtl?id=123 ,然后将用户的请求保存在会话值中,并将用户重定向到没有参数的实际页面使用哈希 /details.hmtl#id=123 然后获取当前用户的会话并呈现页面内容。
如果不使用JS
,就可以这样做此致 NIL
答案 1 :(得分:0)
锚点(#)之后的部分永远不会被浏览器发送到服务器,除非你破解它的方式。以下是使用Cookie执行此操作的方法:http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
答案 2 :(得分:-1)
你为什么要用这个? NiL的第一部分答案是使用实际查询?相反,我是第二个。但是不要打扰重定向到通用页面等。你想要一个页面上有关于id 123的信息,所以从服务器返回!您正在主动选择将关于id 123的页面的单个请求转换为请求 - 通用响应特定的特定于请求的响应周期,这是没有明显原因的,并且这是用户确实拥有javascript的正常情况!
一定要使用动态内容并更改第二个请求的页面,但到那时你已经知道用户有javascript。对于第一个请求,请坚持使用?id = 123并将其提供给完整的页面。
为什么会使它复杂化并减慢速度?