2010-01-05 73 views
3

我的网站上有一个页面,它通过AJAX请求了相当多的内容。我遇到的问题是,如果您在网站上闲逛并且在技术上没有网址的网页上,则无法复制/粘贴网址并将其发送给某人,因为您只会在主页上结束。指向AJAX网址的链接

我在看Facebook,他们使用一个锚点来寻找通过原始URL请求的URL,如下所示:http://www.facebook.com/#/somepage(如果您在主页上并转到somepage,那是一个AJAX请求)。

设置的URL的锚就不会在所有问题,因为我用我所有的AJAX的东西<a>标签反正,但我会怎么能够得到mysite.come/#/some-ajax-page/正常工作和显示some-ajax-page应该是什么,不只是试图在DOM中找到名为/some-ajax-page/的锚?

P.S.我使用jQuery作为我的JS和Django服务器端

回答

4

您可以使用document.location对象引用当前页面的URL。这不是标准,但是,我知道每个浏览器都支持它。该对象的hash属性为您提供了哈希符号背后的部分。

所以,在你的jQuery。就绪功能,可以探测document.location.hash(您例如URL http://www.facebook.com/#/somepage,将评估为/somepage),并解释它做一切必要重新创建你页面的适当的状态。你需要在这里做什么逻辑当然取决于你 - 我们无法闻到你的页面可以拥有什么状态,以及你想如何在锚文本中表示它们。

有关更多信息,请参阅位置对象的mozilla文档。 AFAIK所有浏览器都支持这些属性:https://developer.mozilla.org/en/DOM/window.location

+0

太棒了!这正是我正在寻找的......某种方式只是“阅读”JavaScript中的锚点。万分感谢! – Zack 2010-01-05 18:58:19

-1

只需从请求的URL中获取片段(您可能需要使用request.get_full_path()),然后在服务器上正确构建页面。

+1

我不相信URL片段可以在服务器端访问(无需通过AJAX调用有意发送它) - 它完全是客户端。 – ceejayoz 2010-01-05 18:56:14

1

结账jQuery BBQ。我们最近在项目上使用了类似的东西,而且非常漂亮。

其基本思想是基于散列来监听哈希和运行函数(即通过ajax获取新页面)的更改。

+0

这可能就是我最终使用的...非常漂亮的插件,我现在正在阅读它。谢谢! :) – Zack 2010-01-05 19:04:46

+0

没问题。我希望它有帮助。 – davethegr8 2010-01-05 19:47:05