首页 > 技术文章 > 关于服务器和客户端传值的问题

21tcy 2015-09-08 14:30 原文

在客户端浏览器AJAX传值时会出现传递的值在服务器端接受不正常问题,通常问题出现在"+","&"上,

出现的现象是+变空白,&变分隔,因为+号在是保留用来传递空格的符号,而真正的加号变成了%2B

对应的解决办法是

str= encode.replace(/\+/g, "%2B").replace("/\&/g", "%26");

同样,服务器端传递加号时也需要处理

System.Web.HttpUtility.UrlEncode(str).Replace("+","%20")

System.Web.HttpUtility.UrlEncode函数会将空格变成+号,而原本的加号已经变成%2B

 

同时附上客户端的编码情况

escape不编码字符有69个(基本上就是编码中文,适用于传递html):*,+,-,.,/,@,_,0-9,a-z,A-Z 
encodeURI不编码字符有82个(编码为一个有效的URL地址):!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z 
encodeURIComponent不编码字符有71个(中文+http://等地址,用于传递整个地址):!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

推荐阅读