为什么URL的散列部分在服务器端不可用?

为什么URL的散列部分在服务器端不可用?

例如,如果我输入URL:

http:/www.foo.com/page.php?参数=KKME#MOREURL

然后在服务器上没有部分:#MOREURL

在没有jQueryAjax的情况下,可以将这些部分发送或获取到服务器吗?


鸿蒙传说
浏览 433回答 3
3回答

互换的青春

由于浏览器默认不会将散列发送到服务器,因此唯一的方法是使用一些Javascript:当表单提交时,获取散列(window.location.hash)并将其存储在服务器端隐藏的输入字段中,将其放入一个ID为“url散列”的dIV中,这样我们以后就可以很容易地找到它。在服务器上如果需要使用该值,可以使用它。如果你需要的话,你甚至可以改变它。页面加载在客户端,检查此隐藏字段的值。您将希望通过包含在其中的DIV找到它,因为不知道自动生成的ID。是的,您可以在这里使用.ClientID进行一些技巧,但是我们发现只使用包装器DIV就更简单了,因为它允许所有这些Javascript驻留在外部文件中,并以通用的方式使用。如果隐藏输入字段有一个有效值,将其设置为URL散列(再次设置为window.locaion.hash)和/或执行其他操作。我们使用jQuery简化了字段的选择,等等。总之,它最终是一些jQuery调用,一个用来保存值,另一个用来恢复它。在提交之前:$("form").submit(function() {   $("input", "#urlhash").val(window.location.hash);});页面加载:var hashVal = $("input", "#urlhash").val();if (IsHashValid(hashVal)) {   window.location.hash = hashVal;}IsHashValid()可以检查“未定义”或其他不想处理的事情。当然,一定要适当地使用$(Document).ready()。
打开App,查看更多内容
随时随地看视频慕课网APP