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

时间:2012-02-09 20:05:48

标签: php javascript facebook

我在php中创建一个Web应用程序。我正在通过基于ajax的请求加载内容。 当我点击超链接时,相应的页面将通过ajax获取,内容将被获取的页面替换。

现在的问题是,我需要一个物理href,以便我可以实现类似facebook的功能,还可以维护浏览器历史记录属性。我不能做一个旧学校POSTBACK到php页面,因为我正在做一个过渡动画,当前页面滑开,新页面滑入。

有没有办法可以保留动画并且仍然有一个有效的物理href和历史记录。

应用程序的设计是这样的:

  1. 该应用程序获取RSS提要。
  2. 它为那些rss feed创建DOM。
  3. 点击任何标题后,该页面会动画并显示rss Feed的完整故事。
  4. 我需要在完整的故事页面上创建“喜欢”按钮。但我没有有效的网址。

5 个答案:

答案 0 :(得分:4)

虽然Alexander的答案在客户端很有效,但Facebook的linter工具不运行javascript,因此它将获得旧内容。这两个链接都没有提供解决方案。

需要实现的是服务器端解析url。见http://www.php.net/manual/en/function.parse-url.php。片段是服务器看作哈希标记值的内容。在您的PHP代码中,根据片段呈现正确的og:标签。

答案 1 :(得分:2)

首先,如果你需要一个facebook的URL,那么想一个给你一个的结构,这样你的服务器端代码就会在给出那个URL时加载正确的页面。这可能类似于http://yourdomain.com/page.php?feed=<feedname>&link=<linknumber>,它允许您使用PHP $_GET数组检查参数。如果您没有参数,则加载索引页面;如果你这样做,那么加载相关的文章。

其次,使用类似history.js的内容为您提供HTML5 pushState()功能的跨浏览器支持,以便您在执行AJAX调用时设置页面URL,而无需浏览器执行完全重装。

答案 2 :(得分:0)

您必须实现哈希导航。

Here是简短的教程。

Here更具概念性介绍。

答案 3 :(得分:0)

如果您正在使用jQuery,我可以推荐使用烧录进行哈希导航:

http://benalman.com/projects/jquery-bbq-plugin/

答案 4 :(得分:0)

这听起来对我很直接。 你有像往常一样的网址,使用hash(#)你可以在客户端和服务器端提取信息。

在返回内容之前,只有一件事在服务器端丢失,检查用户代理字符串并将其与facebook bot进行比较(如果我没有弄错它就像“facebookexternalhit”),如果事实证明,它是facebook bot然后返回你想要的东西,它描述了like / share(开放图元数据)的url,如果它是任何其他用户代理字符串像往常一样返回内容。