我知道这不容易实现,因为#之后的网址永远不会发送到服务器。
...然而
我有一个显示16个数据库结果的页面。有一个加载更多的按钮,加载下一个16.我试图找到一种方式,如果用户离开当前页面,然后返回它然后我可以获取哈希后的值,并将其用作LIMIT克劳斯值。
因此,www.domain.com访问www.domain.com/#1
我的新结果是通过ajax获取的,我知道您无法使用javascript修改网址而无需重新加载页面。
有没有办法可以在URL中的#后面加上数字,并在PHP中使用它?
我不介意一些hackery并使用javascript等获取它。
谢谢!
答案 0 :(得分:2)
正如您所说,哈希永远不会发送到服务器。读取或设置哈希的唯一方法是使用javascript。
document.location.hash.substring(1) //remove the starting hash
如果要将其发送到服务器,则必须执行AJAX请求。使用jQuery:
$('#content').load('loadContent.php?limit='+document.location.hash.substring(1))
答案 1 :(得分:0)
检查加载时的哈希值。如果存在加载你的ajax:
$(function(){
if(window.location.hash){
yourajaxfunction(window.location.hash.substr(1));
}
});
答案 2 :(得分:0)
找到了解决问题的方法。
每次使用ajax加载结果,因此不需要重新加载页面。
我已经在A链接中包含了我的加载更多按钮,其中一个href以#1开始。
加载新结果后,我将该链接href更改为生成的pageIndex ++编号。
当用户访问该页面时,并且仅当URL包含片段时,我才将该片段转换为?然后重定向。
然后我可以使用PHP GET函数。
示例:
// First get the page URL and split it via # signs
var parts = location.href.split('#');
// now we run a check on the URL and see how many 'parts' there are
if(parts.length > 1)
{
var params = parts[0].split('?');
var mark = '?';
if(params.length > 1)
{
mark = '&';
}
location.href = parts[0] + mark + 'page=' + parts[1];
}