Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php AJAXify站点_Php_Javascript_Jquery_Ajax_Graceful Degradation - Fatal编程技术网

Php AJAXify站点

Php AJAXify站点,php,javascript,jquery,ajax,graceful-degradation,Php,Javascript,Jquery,Ajax,Graceful Degradation,我有正当的理由去做我试图解释的事情。我有一个现有的网站,比如abc.com,它有常规页面等,所有内容都是用php编写的。现在我想对站点进行AJAXify,即当用户单击链接时,它应该使用AJAX获取链接并替换页面内容。这是最简单的部分,我可以使用jqueryget函数实现它 现在,当用户为页面添加书签时,问题就出现了。我可以使用散列标记来指定用户是否在另一个页面上,但是在调用页面时是否可以直接使用PHP来获取新页面,而不是使用javascript来再次获取新页面 你能给我一个如何实现上述目标的概要

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

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

你能给我一个如何实现上述目标的概要吗。此功能与Facebook的功能类似


感谢您抽出时间。

最好的方法是使用一个index.php,根据后面的URL部分加载所有其他页面。例如:

在本例中,index.php将运行,它可以查看所请求的是工时报告,并加载该内容。问题是,如果index.php随后使用AJAX加载所有其他内容,浏览器中的URL将永远不会更改


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

好的,您可以使用这些工具之一,也可以使用自己的工具。使用window.location.hash和其他技巧


这是一个相当简单的过程,(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);
      });

   }

}

答案是否定的,您无法获取URL哈希服务器端的值。看


您必须从客户端获取散列值并发出额外请求。

jQuery历史记录是我的首选。可以在这里找到:提供跨浏览器支持、绑定到哈希、重载哈希等等

它还有一个称为jQuery Ajaxy的Ajax扩展,允许它轻松地将您的网页升级到适当的Ajax应用程序,而无需进行服务器端更改,也无需对SEO和JS禁用:

这是和等站点选择的解决方案


总的来说,它们都有很好的文档记录、支持和功能丰富。他们还赢得了一个悬赏问题

我最近写了一篇关于这个问题的文章。这篇文章是教程式的。通过使用hash change事件,我展示了如何向url添加参数,这可以触发具有无限多个参数的ajax请求,从而以一种非常可伸缩的方式运行

你可以在这里找到更多关于它的信息


第一部分介绍如何响应散列链接,第二部分介绍如何将散列url中的数据发送到ajax请求,从而允许您从url中的散列标签中执行几乎任何您想要的操作。

我不知道为什么会否决这一点,这是一个完全合理的问题。ajax位真的离题了,您想知道的是php是否可以读取锚标记并重定向。也就是说,您可以测试mainpage.php#about_us(书签链接)并重定向到aboutus.php(直接链接到Bookmar时用户正在查看的内容)。我不知道答案,但我建议澄清这个问题。@musicfreak:同意,我给了它一个向上的投票,让它回到正数在你的例子中,当我使用后退和前进按钮时,它不记得以前的状态。这是问题的关键,需要在DocumentReady上检索该值,然后用于激活相关的ajax功能。