【问题标题】:Couple PHP with AJAX States将 PHP 与 AJAX 状态结合起来
【发布时间】:2010-06-19 16:45:06
【问题描述】:

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

问题:

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

网址:localhost/index.php#!/search

导航到这个页面没问题,但是按刷新 php 可以:

网址:localhost/index.php

然后 javascript 去:

网址:#!/搜索

所以我实际上加载了两个页面......这很糟糕。

这是一个必须发生的问题,我注意到 facebook 这样做是为了缩短加载时间(与我想这样做的原因相同)。据我所知,他们能够可靠地检测哈希并将 $_SERVER['REQUEST_URI'] 替换为其内容,因此当您刷新时,您会从 localhost/index.php#!/search 获得 localhost/search。

我想知道是否有人对此有一点解决办法。我查看了服务器端 javascript,但经过大量谷歌搜索后,我并没有真正得到清晰的图片。

提前致谢

【问题讨论】:

  • 我忘了补充一点,cookie 在这种情况下不起作用。如果用户没有按顺序浏览网站,他们将看到他们不想看到的页面。

标签: php ajax web-applications jquery


【解决方案1】:

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

【讨论】:

  • 是的,这就是我的想法,我想我有点希望有更好的方法。我最初想以某种方式在我的 php 之前运行 javascript,它不会在页面上留下印记(在 html 标记之上)但是是的,引导程序似乎是唯一的方法,我将把它打开一段时间,以防有人有任何其他想法
  • 好吧,使用我描述的静态页面,从技术上讲,您是在 PHP 之前运行 JavaScript(而不是在呈现 HTML 文档之前)。但我知道你的意思。我也很好奇,但怀疑还有另一种方法。
  • 你有一个像样的引导程序的示例链接,因为我似乎无法让我的 javascript 在不需要刷新页面的情况下预先运行。我的大脑一直对 php 和 javascript 之间的分层感到困惑。
  • 啊,我发现了 facebook 是如何做到的。他们有一个元刷新,向他们的页面添加了一个 get 变量。他们使用 php 来获取这个 get 变量,如果它没有被分配,他们默认为 ajax 加载......嗯应该可以工作:D
  • 详细说明他们使用的一点: 然后刷新他们制作一个 php不会显示刷新的函数...prolly仔细检查get数组或会话中的get。他们prolly在它之前种植了一个js会话处理程序,以在重新打开js时取消设置变量....狡猾的小虫子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
  • 2011-08-02
  • 1970-01-01
相关资源
最近更新 更多