url中出现井号("#")的问题
今天在asp.net mvc网站项目的前台页面里写一段js代码时,想要跳转到某个url,例如
location.href="xxxx?"+"id="+id+"&keyword="+keyword;
其中id和keyword都是后台Controller的Action方法需要的参数,从html的input文本框的值,奇怪的是当在keyword文本框输入"#1作品"时,发现传到后台时keyword的值为null,前端明明传的是"#1作品",怎么到了后台成了null?
另外一类似的方法中,用JQuery的ajax发送post请求时,也向后台发送了参数id="#1作品",后台却能正确接收到"#1作品"。
上网查了才知道,当url中出现"#"号时,"#"及其后面的字符串都会被忽略,不会被发送到服务器,因为浏览器将一个url视为一个html页面,而"#str"表示该页面的id为str的块(section),如<div id="str">......</div>,请求被发送到服务器,然后服务器把页面发送到浏览器,并被浏览器解析之后,浏览器在将该页面自动滚动到id为str的section。
因为请求的是页面,所以浏览器不会把"#"后面的当成参数发送到服务器,因此服务器收到的该参数值为null.
但是服务器又需要这个参数,怎么办呢,答案是对参数进行转义就行了,利用js的escape()函数即可转义:
location.href="xxxx?"+"id="+id+"&keyword="+escape(keyword);
这样"#"会被转义成"%23",而后台的cs代码会自动将其恢复成转义之前的"#"。
而用JQuery发送post类型的ajax请求时,因为参数被封装进数据体,并没有放在url中,因此不需要转义也会原原本本地发送给服务器,转义之后反而得不到"#"了,而是变成了"%23"。
url中出现井号("#")的问题的更多相关文章
- ASP.NET MVC Url中带点号出现404错误的解决方案
由于项目需求,项目的路由设计如下 config.Routes.MapHttpRoute( name: "Get/Put Sku", routeTemplate: "api ...
- zencart分类页产品页去掉url中的id号
最近公司新上的网站被seo指出要修改url,去掉url中产品id.由于我们用的是zencart框架,装了 Ultimate SEO URLs 插件,所以在网上应该有这方面的资料,本文主要参考资料: 原 ...
- js获取url 中的值,并跳转相应页面
实现方法:一:获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET1.函数: <Script lang ...
- 将网址url中的参数转化为JSON格式的两种方法
在我们进入主题前,我先先看下获取网址URL的方法: window.location.href // 设置或获取整个URL为字符串 window.location.hash // 设置或获取href属性 ...
- JS获取url中query_str JavaScript RegExp 正则表达式基础详谈
面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.window.location.href(设置或获取整个 URL ...
- URL中字符的含义
目录 URL中的特殊字符 #号的作用 URL中的特殊字符 我们经常会看到URL中有一些特殊的字符,比如 #,?,& ,/ ,+ 等.那么,它们的含义是什么呢? 特殊含义 十六进制 + 表示空格 ...
- URL中#(井号)的作用(转)
2010年9月,twitter改版. 一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为 http://twitter.com/username 改版后,就变 ...
- URL 链接中 井号#、问号?、连接符& 分别有什么作用?
在一个 URL 中可以包含很多的内容,其中不仅仅是包含 26 个英文字母,10 个罗马数字,中文汉字,还可以拥有井号“#”.问号“?”.连接符“&”等三种最常见的符号,那么这些符号在网站中都有 ...
- URL中的hash(井号)
1.#的含义 #代表网页中的一个位置,其右边的字符,就是该位置的标识符.比如 http://www.example.com/index.html#print 就是代表index.html中的print ...
随机推荐
- NodeJS Debugger
http://cnodejs.org/topic/4f16442ccae1f4aa27001105 http://blog.csdn.net/ygh_0912/article/details/9108 ...
- wordpress数据库表说明
wp系统所用的表不多,那么每张表具体都存些什么?今天给大家介绍一下,希望对你有帮助. wp_commentmeta: 用于保存评论的元信息,在将评论放入回收站等操作时会将数据放入此表,Akismet等 ...
- Request.GetOwinContext()打不到
Although it's in the Microsoft.Owin.Host.SystemWeb assembly it is an extension method in the System. ...
- LevelDB库简介
LevelDB库简介 一.LevelDB入门 LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询 ...
- python- shutil 高级文件操作
简介 shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作.对单个文件的操作也可参见os模块. 拷贝文件 shutil.copyfile(src, ...
- iOS版本控制git小结--yoowei
# 显示隐藏文件 defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder # 不显示隐藏文件 d ...
- CentOs图形界面的开启与关闭
1.1 shell中运行 init 3 进入文本模式,同时会关闭相关的服务(Xserver 肯定关闭) 1.2 Alt+Ctrl+F1~F6到字符界面,root登陆,ps aux|grep /usr ...
- jquery access方法 有什么用
Jquery设置对象属性的有几种方法1.获取属性attr(name) 2.设置属性attr(name,value)3.批量设置属性attr(properties)4.为所有匹配的元素设置一个计算的属性 ...
- VS2010webConfig配置
1.连接SqlServer数据库 <connectionStrings> <add name="ConnectionStringName" connectionS ...
- 如何在JDK1.8中愉快地处理日期和时间
如何在JDK1.8中愉快地处理日期和时间 JDK1.8新增了LocalDate和LocalTime接口,为什么要搞一套全新的处理日期和时间的API?因为旧的java.util.Date实在是太难用了. ...