这是大多数新的AJAXian开发人员难以理解的问题。但实际上,这是一个相当简单的问题。
首先,您需要的是jQuery核心,可以在jquery.com免费下载。
接下来,您需要Ben Alman的jQuery哈希更改插件,您可以在此处找到:http://benalman.com/projects/jquery-hashchange-plugin/ 对于支持html5哈希更改事件的较新版本的浏览器,您不需要此插件,但对于旧版本的浏览器,您需要它。您只需将此脚本包含在页面中即可,它会处理其余部分。
现在,对于您的链接,您需要以查询字符串方式构建它们,如下所示:
<a href="user.php?q=/topic/article" class="dynlnk">Link Text/Image</a>
现在您有链接可以转到页面,并且可以在 PHP 中处理,以防 JavaScript 被关闭。您只需要使用超级全局变量 $_GET 并解析查询字符串来处理页面内容。
现在在您的页面上的 JavaScript 中,您需要使您的链接触发哈希更改。您可以通过将 ?q= 替换为 # 来实现。
$(".dynlnk").each(function(){
$(this).attr("href", $(this).attr("href").replace("?q=", "#"));
});
现在您的链接将触发哈希更改,唯一剩下的事情就是将哈希更改绑定到执行某些操作的函数上。这可以使用jQuery非常简单地完成,如下所示:
$(window).bind( 'hashchange', function(e){
//this splits the part after the hash so you can handle the parts individually.
//to handle them as one just use location.hash
pageparts = location.hash.split("/");
});
现在只需添加处理您的ajax和内容的任何代码。
现在你只需要最后一点javascript来触发hashchange,以防页面最初加载时有一个哈希,所以当页面加载时只需调用窗口触发函数即可。
$(window).trigger( 'hashchange' );
希望这已经足够清晰了,如果还有疑问,请随时联系我提出更多问题。