使用ajax向后台提交的时候 由于参数中含有#  默认会被截断 只保留#之前的字符  json格式的字符串则不会被请求到后台的action

可以使用encodeURIComponent在前台进行编码,C#后台使用Server.UrlDecode(paras)解码来解决此问题

前台js:

$.ajax({
url: "",
type: "POST",
data: { "paras": encodeURIComponent(JSON.stringify(paras))},
success: function (data) { }
});

C#后台:

string str= Server.UrlDecode(paras);

这样就可以保证参数不会被#截断了。

以上。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

另外附上js编码解码的几种方法(参考w3school:  http://www.w3school.com.cn/jsref/jsref_obj_global.asp):

编码函数 escape  encodeURI  encodeURIComponent  对应解码函数  unescape  decodeURI  decodeURIComponent

escape():

采用unicode字符集对指定的字符串除0-255以外进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字) 比如: 空格符对应的编码是%20。

该方法不会对 ASCII 字母和数字进行编码(0-9,a-z,A-Z),也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。

也就是说escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

为防止 中文乱码,js传值要转码,当js 用 escape() 转码时,.Net 后台可以用 HttpUtility.UrlDecode() 进行解码。

例如:

  document.cookie = "city=" +escape($(this).html());
string city = HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies["city"].Value);

  

encodeURI():

采用UTF-8编码格式把字符串作为 URI 进行编码。 该方法不会对 ASCII 字母和数字进行编码(0-9,a-z,A-Z),也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( )

该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

也就是说encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

提示:如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。

js函数:
encodeURI("url")//编码
decodeURI("url")//解码 asp.net的函数:
Server.UrlEncode("url")//编码
Server.UrlDecode("url")//解码

encodeURIComponent() :

采用UTF-8编码格式把字符串作为 URI 组件进行编码。

该方法不会对 ASCII 字母和数字进行编码(0-9,a-z,A-Z),也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( )

其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

也就是说encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。

JS编码:var result=encodeURIComponent(unit);
asp.net解码:Server.UrlDecode(Request["result"]);

注意: encodeURI和encodeURIComponent会把字符串编码成UTF-8的格式。

总结:

1 传递参数时 使用 encodeURIComponent

2 进行url跳转时可以整体使用encodeURI

3 js使用数据时使用escape

最新文章

  1. JavaScript测试工具比较: QUnit, Jasmine, and Mocha
  2. centos 下git服务器搭建
  3. wpf框架模型分析
  4. php的源代码包构建一个空的php扩展。
  5. Aspose插件
  6. web服务器与应用服务器
  7. You must not call setTag() on a view Glide is targeting
  8. PHP之算法
  9. java中的异常处理机制
  10. vue 集成 axios 发送post请求 payload导致后台无法接收到数据问题
  11. canvas星空和图形变换
  12. sql 日常使用记录
  13. Flask系列04--Flask的蓝图
  14. .6-浅析express源码之Router模块(2)-router.use
  15. [2017BUAA软工]个人阅读作业+总结
  16. Go语言之进阶篇 netcat工具的使用
  17. MVC ---- EF的安装于卸载
  18. Linux 的基础命令的操作
  19. mysql store procedure 存储过程
  20. STL - Map - 运行期自定义排序

热门文章

  1. Layui:前后端分离之Form表单
  2. artdialog(4.1.7)弹出框
  3. 【slenium专题】Webdriver同步设置
  4. Mitsubishi Lancer JDM
  5. Day 32 网络编程
  6. hdu2829 Lawrence
  7. Python3.5 学习八 附加知识点 paramiko和rsa非对称秘钥的适用
  8. BZOJ3775: 点和直线(计算几何+拉格朗日乘数法)
  9. BZOJ 1305--[CQOI2009]dance跳舞(最大流)
  10. SAX,功能强大的 API