Javascript 在PHP中的URL中使用哈希后的值
我知道这并不容易,因为#之后的url从未发送到服务器 然而 我有一个页面显示16个数据库结果。有一个加载更多按钮,用于加载下一个16。我试图想出一种方法,如果用户离开当前页面并返回它,那么我可以在散列之后获取值,并将其用作限制克劳斯值 因此,www.domain.com转到www.domain.com/#1 我的新结果是通过ajax获取的,我知道如果不重新加载页面,就不能用javascript修改URL 有没有一种方法可以将URL中的#后面的数字用于PHP 我不介意一点黑客行为,并用javascript等获得它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
谢谢 正如您所说,哈希永远不会发送到服务器。读取或设置散列的唯一方法是使用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在浏览器中运行并且知道锚。