2011-11-16 62 views
0

在线阅读关于散列声音之后。我决定坚持我们目前的网址结构。我一直在开发一个网站,并使其完全非JavaScript。我进入了一个阶段,我可以开始升级一些东西,看中javascript和ajaxy的东西。网址更改时没有散列声音和片段

给一点信息。基本上当用户访问该网站时,主页是主要区域。它有一些统计数据和一个框。在这个框中有一些公司的细节,包括一些号召性用语按钮(转到地图,联系人,e.c.t.)。

当搜索一个公司,或者直接链接到你去

http://mysite.com/company/公司名称

这则网址被Apache重写

http://mysite.com/index.php?company=公司名称的公司

然后我的PHP脚本加载框与公司的详细信息等。

现在我来做一些ajaxy的东西。我希望用户能够点击我网站上的公司链接,并且无需重新加载页面即可使用搜索。因此,如果他们点击顶部查看公司的名称,一个快速加载符号将出现在框中,然后公司详细信息将被加载到该区域。

再次,这不是一个问题。我可以通过多种方式来完成,通过锚点上的点击处理程序绑定类名绑定或url正则表达式绑定。

但是,继承人我的问题。我需要能够更改网址,以便它始终反映公司的名称。用户通过复制和粘贴网址来分享链接。即使我提供了“点击复制到剪贴板”的固定链接按钮,他们几乎不会使用它。 Ebay是一个典型的例子,它们提供了很好的分享网址,但它常见的是在这个地方的论坛上发布很长的内容。

Hashbangs或其他碎片化的URL方法将允许我这样做。我也可以将javascript处理程序附加到document.load,以便在用户从碎片URL访问网站时填充框。但是,如果非JavaScript用户使用碎片化的网址访问网站,他们只会获得首页,并且必须手动搜索公司。

考虑到花时间和精力开始处理所有非js事务。我现在不想破坏或者不得不决定是否转储非js用户。然而,阿贾克斯加载的内容是非常重要的,所以共享网址。

理想的解决方案要么是PHP的方式读取零散URL或JavaScript的改变URL路径

任何人都可以在这方面帮助的方法吗?

上传:道歉对这篇文章。只是想给尽可能多的信息,并分享从研究中发现的什么,以节省时间去检查我可能已经看过的东西

+0

阅读:http://www.workingwith.me.uk/articles/scripting/mod_rewrite –

+2

没有真正有益的二极管,我知道关于国防部重写 – Lee

回答

1

看看我使用hashtags构建的AJAX系统。它在现代浏览器中使用window.history,并且对于不支持酷酷的AJAX内容的旧版本而言会退步。

http://xeoncross.github.com/MicroStream/

你可以看到它活在我的网站:http://xeoncross.com

这低于简单,良好的注释代码10KB,所以你应该能够掌握它没有问题。

+0

谢谢,我读过关于历史API的消息。从来不知道你可以改变这样的网址。但是这并不能满足我的需求。如果历史API不受支持,您的ajax将无法使用。但IE9(和 Lee

+0

其实@Lee,无论你如何处理其余的计划,你都可以实现这一点。它降级为 Xeoncross

+0

我知道我IE会很好地降低到正常的浏览器加载。但那不是我想要的。 IE支持ajax,但不支持历史API。您的代码似乎需要使用ajax的历史API,因为它修改了URL。如果历史API要求不能保持URL正确,那对我的需求来说是完美的。我认为基于研究,但我可以在Firefox和Chrome中使用你的方法,并在IE中使用片段。这种方式虽然并不完美,但它只会是IE用户从非JavaScript用户的URL栏发布链接,这会导致问题。 – Lee