将PHP与AJAX状态耦合

将PHP与AJAX状态耦合,php,ajax,web-applications,jquery,Php,Ajax,Web Applications,Jquery,我在尝试制作ajax/静态程序时遇到了一个令人费解的问题。我想做的是允许一个静态链接的应用程序有ajax动态URL,在页面刷新之前一切都很好 问题是: PHP没有看到散列,因此它只看到原始URI请求。因此,PHP加载原始页面,但随后JQuery(Javascript)将该页面替换为我希望在#之后的实际页面。例如: url:localhost/index.php#/搜寻 可以导航到此页面,但按refresh php可执行以下操作: url:localhost/index.php 然后javascr

我在尝试制作ajax/静态程序时遇到了一个令人费解的问题。我想做的是允许一个静态链接的应用程序有ajax动态URL,在页面刷新之前一切都很好

问题是:

PHP没有看到散列,因此它只看到原始URI请求。因此,PHP加载原始页面,但随后JQuery(Javascript)将该页面替换为我希望在#之后的实际页面。例如:

url:localhost/index.php#/搜寻

可以导航到此页面,但按refresh php可执行以下操作:

url:localhost/index.php

然后javascript用于:

网址:#/搜寻

所以我实际上加载了两页…太糟糕了

这是一个必须发生的问题,我注意到facebook这样做是为了帮助加载时间(和我想这样做的原因相同)。据我所知,他们能够可靠地检测散列并用其内容替换$_服务器['REQUEST_URI'],因此当您刷新时,您可以从localhost/index.php获得localhost/search/搜索

我想知道是否有人能解决这个问题。我看过服务器端javascript,但在谷歌搜索了很多次之后,我并没有真正弄清楚


提前感谢

当浏览器发出请求时,它本身甚至不发送URL的哈希部分。您仍然需要加载两个页面。您所能做的最好的事情就是使最初加载的页面成为一个简单的静态HTML Ajax引导。通过这种方式,初始页面加载是可缓存的,资源少,加载速度快

我忘了补充一点,在这种情况下,cookies不起作用。如果用户不按顺序浏览网站,他们会看到一个他们不想看到的页面。是的,这就是我所想的,我想我有点希望有更好的方法。我最初想在我的php之前运行javascript,这样就不会在页面上留下印记(在html标记上方),但是的,引导程序似乎是唯一的方法,我会让它保持打开状态一段时间,以防有人有其他想法,使用我描述的静态页面,从技术上讲,您是在PHP之前运行JavaScript(而不是在呈现HTML文档之前)。但我知道你的意思。我也很好奇,但怀疑还有其他方法。你有没有一个优秀的引导程序的示例链接,因为我似乎无法在不需要刷新页面的情况下让javascript提前运行。我的大脑一直被php和javascript之间的分层搞糊涂。啊,我发现facebook是如何做到这一点的。他们有一个元刷新,它向他们的页面添加了一个get变量。他们使用php来获取这个get变量,如果它没有被赋值,他们默认为ajax加载…hmmm应该工作:DTo指定他们使用的一个变量:然后在刷新时,他们生成一个php函数,该函数不会刷新…在get数组或会话中重复检查get。他们通常会在js会话处理程序之前植入一个js会话处理程序,以便在js重新打开时取消变量设置……狡猾的小家伙。