如何解决这个特殊问题?

时间:2011-05-13 21:22:39

标签: jquery ajax django

我正在使用Django anf python做一个应用程序。我的网页必须包含部分内容。左侧部分用于使用ajax导航,它将一些数据带到右侧。单击右侧 它会导致不同的URL。

我的网址图片是:

foo.com/main/
foo.com/main/a/
foo.com/main/a/b/
foo.com/main/a/b/c/

当我点击右侧时,它会进行ajax调用以获取数据。但URL与前一个URL相同。所以,我决定使用#!

但我的问题是: 假设我在URL foo.com/main/a/b/但是在ajax调用后我想要URL foo.com/main/#!/1/那么,我是什么页面如果我做了一个ajax调用,那URL应该是

foo.com/main/#!/1/ 

有可能吗?怎么样?

由于

3 个答案:

答案 0 :(得分:0)

AJAX不会更改URL,因为它不会导致页面重新加载(这是使用AJAX的重点)。您可以使用window.location.href更改URL,但这会导致浏览器尝试从指定的URL获取。我查了一下,有一些迹象表明某些浏览器允许你更改地址栏中的URL而不重新加载页面,但我不会指望这个功能。 (即如果它存在则非常危险(欺骗,网络钓鱼)并且可能会被禁用或改变imo)

答案 1 :(得分:0)

这比Django问题更像是ajax问题,但没关系。您希望代码的客户端部分中的hash-bang(#!)URL与Django端定义的URL之间存在映射。

我建议你寻找一个可以帮助你的Ajax框架。流行的包括Sammy.js,Spine.js和(我的偏好)Backbone.js。这些可以帮助您定义客户端基于散列的URL和通过Ajax访问数据的后端URL之间的常规映射。我喜欢Backbone,因为它在来自服务器的数据集之间的关系,它们的访问URL(用于进行Ajax调用的URL),它们的显示URL(页面上显示的hash-bang URL)以及定义单个数据集之间的关系非常精确每个数据项的方法,用于在两个URL之间进行转换。

答案 2 :(得分:0)

您可能需要执行Google地图使用的网站来启用链接到富含ajax的网页。它们有一个“永久链接”,其中包含网址中的所有参数。然后,如果用户稍后转到该链接,则服务器知道如何设置该页面。了解更多信息,请查看谷歌地图的用途。浏览器窗口中显示的实际文档URL不会更改。如果它足够谷歌,那么它对我们其他人来说足够好了。