我正在使用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/
有可能吗?怎么样?
由于
答案 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不会更改。如果它足够谷歌,那么它对我们其他人来说足够好了。