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


Ajax page fetch design requires physical address

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

现在的问题是,我需要一个物理href,这样我就可以实现类似facebook的功能,还可以维护浏览器历史记录属性。我不能对php页面进行老式的POSTBACK,因为我正在做一个过渡动画,其中当前页面滑动而新页面滑动。

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

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

  1. 该应用程序获取rss提要
  2. 它为那些rss提要创建DOM
  3. 点击任何标题后,页面都会显示出rss提要的全部内容
  4. 我需要在完整的故事页面上创建"点赞"按钮。但是我没有一个有效的网址

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

amit需要实现的是url的服务器端解析。看见http://www.php.net/manual/en/function.parse-url.php.Fragment是服务器认为的散列标记值。在php代码中,根据片段为呈现正确的og:tag。

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

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

您必须实现哈希导航。

这是一个简短的教程。

以下是更多的概念介绍。

如果您使用jQuery,我可以推荐BBQ进行哈希导航:

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

这听起来很直接。您像往常一样拥有url,使用hash(#)可以在客户端和服务器端提取信息。

只有一件事是缺失的,在你返回内容之前,在服务器端,检查用户代理字符串并将其与facebook机器人进行比较(如果我没有错的话,这是一个类似于"facebookexternalhit"的东西),如果它是facebook机器人,那么返回你想要的,描述like/share(开放图元数据)的url,如果是任何其他用户代理字符串,则照常返回内容。