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

时间:2014-04-30 22:08:08

标签: javascript php jquery ajax url

我知道这不容易实现,因为#之后的网址永远不会发送到服务器。

...然而

我有一个显示16个数据库结果的页面。有一个加载更多的按钮,加载下一个16.我试图找到一种方式,如果用户离开当前页面,然后返回它然后我可以获取哈希后的值,并将其用作LIMIT克劳斯值。

因此,www.domain.com访问www.domain.com/#1

我的新结果是通过ajax获取的,我知道您无法使用javascript修改网址而无需重新加载页面。

有没有办法可以在URL中的#后面加上数字,并在PHP中使用它?

我不介意一些hackery并使用javascript等获取它。

谢谢!

3 个答案:

答案 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];
}