为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

犯罪嫌疑人X 2019-07-26 18:14:18
为什么URL的散列部分在服务器端不可用?例如,如果我输入URL:http:/www.foo.com/page.php?参数=KKME#MOREURL然后在服务器上没有部分:#MOREURL在没有jQueryAjax的情况下,可以将这些部分发送或获取到服务器吗?
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

由于浏览器默认不会将散列发送到服务器,因此唯一的方法是使用一些Javascript:

  1. 当表单提交时,获取散列(window.location.hash)并将其存储在服务器端隐藏的输入字段中,将其放入一个ID为“url散列”的dIV中,这样我们以后就可以很容易地找到它。

  2. 在服务器上如果需要使用该值,可以使用它。如果你需要的话,你甚至可以改变它。

  3. 页面加载在客户端,检查此隐藏字段的值。您将希望通过包含在其中的DIV找到它,因为不知道自动生成的ID。是的,您可以在这里使用.ClientID进行一些技巧,但是我们发现只使用包装器DIV就更简单了,因为它允许所有这些Javascript驻留在外部文件中,并以通用的方式使用。

  4. 如果隐藏输入字段有一个有效值,将其设置为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()。




查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 383 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信