Php AJAXify站点
我有正当的理由去做我试图解释的事情。我有一个现有的网站,比如abc.com,它有常规页面等,所有内容都是用php编写的。现在我想对站点进行AJAXify,即当用户单击链接时,它应该使用AJAX获取链接并替换页面内容。这是最简单的部分,我可以使用jqueryget函数实现它 现在,当用户为页面添加书签时,问题就出现了。我可以使用散列标记来指定用户是否在另一个页面上,但是在调用页面时是否可以直接使用PHP来获取新页面,而不是使用javascript来再次获取新页面 你能给我一个如何实现上述目标的概要吗。此功能与Facebook的功能类似Php AJAXify站点,php,javascript,jquery,ajax,graceful-degradation,Php,Javascript,Jquery,Ajax,Graceful Degradation,我有正当的理由去做我试图解释的事情。我有一个现有的网站,比如abc.com,它有常规页面等,所有内容都是用php编写的。现在我想对站点进行AJAXify,即当用户单击链接时,它应该使用AJAX获取链接并替换页面内容。这是最简单的部分,我可以使用jqueryget函数实现它 现在,当用户为页面添加书签时,问题就出现了。我可以使用散列标记来指定用户是否在另一个页面上,但是在调用页面时是否可以直接使用PHP来获取新页面,而不是使用javascript来再次获取新页面 你能给我一个如何实现上述目标的概要
感谢您抽出时间。最好的方法是使用一个index.php,根据后面的URL部分加载所有其他页面。例如: 在本例中,index.php将运行,它可以查看所请求的是工时报告,并加载该内容。问题是,如果index.php随后使用AJAX加载所有其他内容,浏览器中的URL将永远不会更改
解决这个问题的一种方法是,在每个包含这种URL形式的页面上都放置一个“链接到此页面”链接,供用户添加书签。好的,您可以使用这些工具之一,也可以使用自己的工具。使用window.location.hash和其他技巧
// 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功能。