网站搜索

php - Ajax 页面获取设计需要物理地址


我正在用 PHP 创建一个网络应用。我通过基于 Ajax 的请求加载内容。当我点击一个超链接时,相应的页面通过 Ajax 获取,并且内容会被获取的页面替换。

现在的问题是,我需要一个实际的 href,这样我才能实现类似 Facebook 的功能,同时也能维护浏览器的历史记录属性。我不能对 PHP 页面进行传统的回传(POSTBACK),因为我正在做一个过渡动画,当前页面会滑出,而新页面会滑入。

有没有一种方法可以让我保留动画,同时仍然有一个有效的物理 href 和历史记录。

该应用程序的设计如下:

  1. 该应用程序抓取一个 RSS 源。
  2. 它为那些 RSS 源创建 DOM。
  3. 点击任何标题时,页面会动画显示并跳转到 RSS 源的完整故事。
  4. 我需要在完整故事页面上创建“喜欢”按钮,但我没有有效的 URL。

答案#1

虽然亚历山大的方法在客户端效果很好,但 Facebook 的代码检查工具不运行 JavaScript,因此它会得到旧的内容。这两个链接都没有提供解决方案。

Amit需要实现的是URL的服务器端解析。请参见 http://www.php.net/manual/en/function.parse-url.php。Fragment 是服务器看到的哈希标记值。在你的PHP代码中,根据fragment生成正确的og:标签。

答案#2

首先,如果你需要一个 Facebook 的 URL,那么想出一个结构来提供它,这样你的服务器端代码在给定该 URL 时就会加载正确的页面。这可以是像 http://yourdomain.com/page.php?feed=<feedname>&link=<linknumber> 这样的形式,这样你就可以使用 PHP 的 $_GET 数组检查参数。如果没有参数,则加载首页;如果有参数,则加载相关的文章。

其次,使用类似 history.js 的东西为 HTML5 的 pushState() 功能提供跨浏览器支持,这样在执行 AJAX 调用时就可以设置页面 URL,而不需要浏览器进行完整的重新加载。