假设URL为:
www.example.com/?val=1#part2
PHP可以使用GET数组读取请求变量val1。
哈希值part2也是可读的吗?或者这仅仅取决于浏览器和JavaScript?
假设URL为:
www.example.com/?val=1#part2
PHP可以使用GET数组读取请求变量val1。
哈希值part2也是可读的吗?或者这仅仅取决于浏览器和JavaScript?
当前回答
另一个解决方案是在php页面中添加一个隐藏的输入字段:
<input type="hidden" id="myHiddenLocationHash" name="myHiddenLocationHash" value="">
使用javascript/jQuery,你可以在页面加载或响应事件时设置该字段的值:
$('#myHiddenLocationHash').val(document.location.hash.replace('#',''));
在php的服务器端,你可以使用$_POST集合读取这个值:
$server_location_hash = $_POST['myHiddenLocationHash'];
其他回答
它可以从Javascript中检索-作为window.location.hash。从那里,你可以用Ajax将其发送到服务器,或者将其编码并放入url中,然后可以传递到服务器端。
我们也可以用另一种方法来做,比如首先从js中获取哈希值,然后使用该参数调用ajax,可以做任何我们想做的事情
是什么:
动态抓取#散列
<script>
var urlhash = window.location.hash, //get the hash from url
txthash = urlhash.replace("#", ""); //remove the #
//alert(txthash);
</script>
<?php
$hash = "<script>document.writeln(txthash);</script>";
echo $hash;
?>
为了使它更流利:
使用Javascript和PHP的完整示例
<script>
var urlhash = window.location.hash, //get the hash from url
txthash = urlhash.replace("#", ""); //remove the #
function changehash(a,b){
window.location.hash = b; //add hash to url
//alert(b); //alert to test
location.reload(); //reload page to show the current hash
}
</script>
<?php $hash = "<script>document.writeln(txthash);</script>";?>
<a onclick="changehash(this,'#hash1')" style="text-decoration: underline;cursor: pointer;" >Change to #hash1</a><br/>
<a onclick="changehash(this,'#hash2')" style="text-decoration: underline;cursor: pointer;">Change to #hash2</a><br/>
<?php echo "This is the current hash: " . $hash; ?>
主要的问题是浏览器甚至不会发送带有片段部分的请求。片段部分在浏览器中被解析。它可以通过JavaScript访问。
无论如何,您可以使用parse_url()将URL解析为位,包括片段部分,但这显然不是您的情况。
另一个解决方案是在php页面中添加一个隐藏的输入字段:
<input type="hidden" id="myHiddenLocationHash" name="myHiddenLocationHash" value="">
使用javascript/jQuery,你可以在页面加载或响应事件时设置该字段的值:
$('#myHiddenLocationHash').val(document.location.hash.replace('#',''));
在php的服务器端,你可以使用$_POST集合读取这个值:
$server_location_hash = $_POST['myHiddenLocationHash'];