Javascript 在PHP中的URL中使用哈希后的值

Javascript 在PHP中的URL中使用哈希后的值,javascript,php,jquery,ajax,url,Javascript,Php,Jquery,Ajax,Url,我知道这并不容易,因为#之后的url从未发送到服务器 然而 我有一个页面显示16个数据库结果。有一个加载更多按钮,用于加载下一个16。我试图想出一种方法,如果用户离开当前页面并返回它,那么我可以在散列之后获取值,并将其用作限制克劳斯值 因此,www.domain.com转到www.domain.com/#1 我的新结果是通过ajax获取的,我知道如果不重新加载页面,就不能用javascript修改URL 有没有一种方法可以将URL中的#后面的数字用于PHP 我不介意一点黑客行为,并用javasc

我知道这并不容易,因为#之后的url从未发送到服务器

然而

我有一个页面显示16个数据库结果。有一个加载更多按钮,用于加载下一个16。我试图想出一种方法,如果用户离开当前页面并返回它,那么我可以在散列之后获取值,并将其用作限制克劳斯值

因此,www.domain.com转到www.domain.com/#1

我的新结果是通过ajax获取的,我知道如果不重新加载页面,就不能用javascript修改URL

有没有一种方法可以将URL中的#后面的数字用于PHP

我不介意一点黑客行为,并用javascript等获得它


谢谢

正如您所说,哈希永远不会发送到服务器。读取或设置散列的唯一方法是使用javascript

document.location.hash.substring(1) //remove the starting hash
如果要将其发送到服务器,则必须执行AJAX请求。使用jQuery:

$('#content').load('loadContent.php?limit='+document.location.hash.substring(1))

检查加载时的哈希值。如果存在,请加载ajax:

$(function(){
    if(window.location.hash){
        yourajaxfunction(window.location.hash.substr(1));
    }
});

找到了解决这个问题的方法

每次都使用ajax加载结果,因此不需要重新加载页面

我将“加载更多”按钮包装在一个A链接中,该链接的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];
}

当页面加载时,允许PHP发送一个空白页面(无结果)作为结构,并让Javascript根据散列发出初始请求,如果不可用,则请求第一个页面,解析并显示哪个页面。所以不要使用散列<代码>?page=1etcIt不是“散列”,而是“锚定”或“片段”。它的使用完全在浏览器内部,因此它不会与HTTP请求一起发送。如果要在页面url中发送信息,需要使用Dagon建议的查询字符串。一些客户端javascript应用程序使用锚,但这仅是因为javascript在浏览器中运行并且知道锚。