13

我有正当理由去做我试图解释的事情。我有一个现有的网站说 abc.com,它有常规页面等。一切都是用 php 编写的。现在我想对站点进行 AJAX 化,即当用户单击链接时,它应该使用 AJAX 获取链接并替换页面内容。这是简单的部分,我可以使用 jQuery get 函数来实现它。

现在,当用户为页面添加书签时,问题就来了。我可以使用哈希标签来指定用户是否在另一个页面上,但不是使用 javascript 再次获取新页面,是否可以在调用页面时直接使用 PHP 获取它。

你能否给我一个关于如何实现上述目标的大纲。此功能类似于 Facebook 的功能。

感谢您的时间。

4

6 回答 6

3

这是一个相当简单的过程:(1)解析哈希标签,(2)像往常一样通过 Ajax 加载内容。

如果您在用户单击页面时加载更多内容,请确保始终正确修改哈希标记以反映页面上的内容。

这是一个简单的例子。单击一个名称并记下井号标签。相关的 Javascript 如下所示:

// Go straight to content if it's in the hash.
$(document).ready(function(){
   load_story_from_hash();
});

// Call this function whenever user clicks on a hash link
function set_hash(hash){
   window.location.hash = hash;
   load_story_from_hash()
}

// Actually load content based on the hash in the URL
function load_story_from_hash(){

   var hash = window.location.hash;
   hash = hash.replace(/^#/, '');

   if (hash) {

      $('#post_container').load(hash+'.html', {}, function(){
         $.scrollTo('#post_container', 1000);
      });

   }

}
于 2009-07-06T20:59:08.950 回答
3

答案是否定的,你无法获取 URL 哈希服务器端的值。请参阅如何从服务器端获取 Url Hash (#)

您必须在客户端获取哈希值并提出额外请求。

于 2009-07-06T21:13:47.783 回答
1

jQuery History 是我的首选。它可以在这里找到:http ://www.balupton.com/projects/jquery-history/提供跨浏览器支持、绑定到哈希、重载哈希等等。

它还有一个名为 jQuery Ajaxy 的 Ajax 扩展,允许它轻松地将您的网页升级为适当的 Ajax 应用程序,而无需更改服务器端并保持对 SEO 和 JS-Disabled 友好:http ://www.balupton.com/projects /jquery-ajaxy/

这是http://wbhomes.com.au/http://www.balupton.com等网站选择的解决方案

总的来说,它们都有很好的文档记录、支持和功能丰富。他们还在这里赢得了一个赏金问题如何在 URL 中显示 Ajax 请求?

于 2010-08-28T17:34:20.457 回答
0

好吧,您可以使用其中一种工具或自己动手。使用 window.location.hash 和其他技巧。

于 2009-07-06T20:43:50.853 回答
0

我最近写了一篇关于这个确切问题的文章。文章为教程风格。使用哈希更改事件,我展示了如何向 url 添加参数,这可以触发具有无限数量参数的 ajax 请求,因此以相当可扩展的方式运行。

你可以在这里找到更多关于它的信息:http://andresgallo.com/2012/06/08/ajaxifying-the-web-the-easy-way/

第一部分介绍如何响应散列链接,而第二部分介绍如何将散列 url 中的数据发送到 ajax 请求,因此您可以从 url 中的散列标签中执行几乎任何您想做的事情。

于 2012-08-11T18:50:37.203 回答
-1

最好的方法是使用一个 index.php 来加载基于它之后的 URL 部分的所有其他页面。例如:

http://www.example.com/index.php/reports/employees/hoursWorked

在这种情况下 index.php 将运行,它可以看到所请求的是工作时间报告,并加载该内容。问题是,如果 index.php 然后使用 AJAX 加载所有其他内容,浏览器中的 URL 将永远不会改变。

解决该问题的一种方法是在每个包含该 URL 形式的页面上放置一个“链接到此页面”链接,供用户添加书签。

于 2009-07-06T20:21:03.490 回答