今天在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中出现井号("#")的问题的更多相关文章

  1. ASP.NET MVC Url中带点号出现404错误的解决方案

    由于项目需求,项目的路由设计如下 config.Routes.MapHttpRoute( name: "Get/Put Sku", routeTemplate: "api ...

  2. zencart分类页产品页去掉url中的id号

    最近公司新上的网站被seo指出要修改url,去掉url中产品id.由于我们用的是zencart框架,装了 Ultimate SEO URLs 插件,所以在网上应该有这方面的资料,本文主要参考资料: 原 ...

  3. js获取url 中的值,并跳转相应页面

    实现方法:一:获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET1.函数: <Script lang ...

  4. 将网址url中的参数转化为JSON格式的两种方法

    在我们进入主题前,我先先看下获取网址URL的方法: window.location.href // 设置或获取整个URL为字符串 window.location.hash // 设置或获取href属性 ...

  5. JS获取url中query_str JavaScript RegExp 正则表达式基础详谈

    面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.window.location.href(设置或获取整个 URL ...

  6. URL中字符的含义

    目录 URL中的特殊字符 #号的作用 URL中的特殊字符 我们经常会看到URL中有一些特殊的字符,比如 #,?,& ,/ ,+ 等.那么,它们的含义是什么呢? 特殊含义 十六进制 + 表示空格 ...

  7. URL中#(井号)的作用(转)

    2010年9月,twitter改版. 一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为 http://twitter.com/username 改版后,就变 ...

  8. URL 链接中 井号#、问号?、连接符& 分别有什么作用?

    在一个 URL 中可以包含很多的内容,其中不仅仅是包含 26 个英文字母,10 个罗马数字,中文汉字,还可以拥有井号“#”.问号“?”.连接符“&”等三种最常见的符号,那么这些符号在网站中都有 ...

  9. URL中的hash(井号)

    1.#的含义 #代表网页中的一个位置,其右边的字符,就是该位置的标识符.比如 http://www.example.com/index.html#print 就是代表index.html中的print ...

随机推荐

  1. NodeJS Debugger

    http://cnodejs.org/topic/4f16442ccae1f4aa27001105 http://blog.csdn.net/ygh_0912/article/details/9108 ...

  2. wordpress数据库表说明

    wp系统所用的表不多,那么每张表具体都存些什么?今天给大家介绍一下,希望对你有帮助. wp_commentmeta: 用于保存评论的元信息,在将评论放入回收站等操作时会将数据放入此表,Akismet等 ...

  3. Request.GetOwinContext()打不到

    Although it's in the Microsoft.Owin.Host.SystemWeb assembly it is an extension method in the System. ...

  4. LevelDB库简介

    LevelDB库简介 一.LevelDB入门 LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询 ...

  5. python- shutil 高级文件操作

    简介 shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作.对单个文件的操作也可参见os模块. 拷贝文件 shutil.copyfile(src, ...

  6. iOS版本控制git小结--yoowei

    # 显示隐藏文件 defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder # 不显示隐藏文件 d ...

  7. CentOs图形界面的开启与关闭

    1.1 shell中运行 init 3  进入文本模式,同时会关闭相关的服务(Xserver 肯定关闭) 1.2 Alt+Ctrl+F1~F6到字符界面,root登陆,ps aux|grep /usr ...

  8. jquery access方法 有什么用

    Jquery设置对象属性的有几种方法1.获取属性attr(name) 2.设置属性attr(name,value)3.批量设置属性attr(properties)4.为所有匹配的元素设置一个计算的属性 ...

  9. VS2010webConfig配置

    1.连接SqlServer数据库 <connectionStrings> <add name="ConnectionStringName" connectionS ...

  10. 如何在JDK1.8中愉快地处理日期和时间

    如何在JDK1.8中愉快地处理日期和时间 JDK1.8新增了LocalDate和LocalTime接口,为什么要搞一套全新的处理日期和时间的API?因为旧的java.util.Date实在是太难用了. ...