2010-06-19 34 views
0

我有一个令人费解的问题,试图制作一个Ajax /静态程序。我想要做的是允许一个静态链接的应用程序有Ajax动态URL和一切都很好,直到页面刷新。夫妇PHP与AJAX国

问题:

PHP不会看到哈希所以它只能看到原始的URI请求。所以PHP加载原始页面,但随后JQuery(Javascript)用#之后我想要的实际替换页面。例如:

!网址:本地主机/ index.php文件#/搜索

这是好的导航到该页面,但按刷新PHP无二:

网址:本地主机/ index.php的

然后JavaScript的无二:

网址:#!/搜索

所以我实际加载两页......这吮吸。

这是一个必须发生的问题,我注意到Facebook已经做到了这一点,以帮助加载时间(同样的原因,我想这样做)。从最好的我可以告诉他们能够可靠地检测到散列,并用它的内容替换$ _SERVER ['REQUEST_URI'],所以当你刷新时你可以从localhost/index.php#!/ search获取localhost/search。

我想知道是否有人对此有一点修补。我看过服务器端的JavaScript,但经过大量的谷歌搜索,我没有真正得到清晰的图片。

在此先感谢

+0

我忘了补充说cookie在这种情况下不起作用。如果用户不通过网站顺序移动,他们将看到他们不想要的页面。 – sammaye 2010-06-19 16:47:18

回答

0

浏览器本身,当它发出请求甚至不发送URL的哈希部分。您仍然需要加载两个页面。您可以做的最好的做法是使最初加载的页面成为一个简单的静态HTML Ajax引导程序。通过这种方式,初始页面负载可以缓存,轻松访问资源,并且可以快速加载。

+0

是的,这是我在想什么,我想我有点希望有一个更好的方法。我最初想到在我的php之前运行javascript,它不会在页面上留下印记(在html标签之上),但是启动程序似乎是唯一的方式,我会留下这个开放时间更长一些,因为有人有任何其他的想法 – sammaye 2010-06-19 17:23:30

+0

好吧,用我描述的方式创建一个静态页面,从技术上说,您在PHP之前运行您的JavaScript(根本不是在HTML文档被渲染之前)。但我知道你的意思。我也很好奇,但值得怀疑的是,还有另一种方式。 – 2010-06-19 17:53:14

+0

你有没有像样的引导程序的例子链接,因为我似乎无法让我的JavaScript在手动运行而无需刷新页面。我的大脑不断被php和javascript之间的分层混淆。 – sammaye 2010-06-19 18:22:46