地址栏(get方式)传值-当传递的值中含某些特殊字符的情况
来源:互联网 发布:淘宝美工教程百度云盘 编辑:程序博客网 时间:2024/06/09 18:32
javascript中数值类型转换的问题
HTTP标准的两种请求方式:Post和Get,关于这两种请求方式的区别相关资料云集,这里不做阐述。然而,你是否注意到:
我们通过get方式从浏览器的地址栏传递数据给服务器,当参数的值中含有某些特殊转义字符的时候,没经过些许处理将得不到预期的结果。
例如:
当我们的请求的url为:
http://localhost:8080/index.jsp?parameter=kalman03#kalman#1
或许你预期在服务器端获得的parameter的结果为kalman03#kalman#1,错!!!实际上得到parameter的值为kalman03。
这究竟是为什么呢?
原因:
parameter的值含有特殊字符#,浏览器自动截断#字符和其后面的值,这样得到的值就为kalman03。
推广:
当参数值中含有特殊字符 ?!=()#%& 的时候,获得的值同样也会出现与预期结果不一致的情况。
解决方案:
方法1:通过post方式传递数据;
方法2:对参数进行一次编码parameter=escape(parameter);
当我们的请求的url为:
http://localhost:8080/index.jsp?parameter=kalman03#kalman#1
或许你预期在服务器端获得的parameter的结果为kalman03#kalman#1,错!!!实际上得到parameter的值为kalman03。
这究竟是为什么呢?
原因:
parameter的值含有特殊字符#,浏览器自动截断#字符和其后面的值,这样得到的值就为kalman03。
推广:
当参数值中含有特殊字符 ?!=()#%& 的时候,获得的值同样也会出现与预期结果不一致的情况。
解决方案:
方法1:通过post方式传递数据;
方法2:对参数进行一次编码parameter=escape(parameter);
第一种解决方案不解释也能明白,现在解释下第二种方法的处理:
JavaScript escape() 函数的功能是把其中某些字符替换成了十六进制的转义序列。该方法不会对ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。具体参考:http://www.w3school.com.cn/js/jsref_escape.asp.
这样来就不会出现自动截断或者其他意想不到的效果。
- 地址栏(get方式)传值-当传递的值中含某些特殊字符的情况
- 地址栏(get方式)传值不能不说的秘密-当传递的值中含某些特殊字符的情况
- 地址栏中传递带有特殊字符的参数,进行转义。
- GET请求中参数含有某些特殊字符的处理
- java 正则匹配 特殊字符 减号- 的情况,处理方式
- Asp过滤某些特殊字符的函数
- Unity3d WWW Get方式特殊字符的处理
- ajax之get方式请求对特殊字符的处理
- get与post的一些特殊情况
- JavaScript传递参数的特殊情况
- get请求中特殊字符的处理
- JSP解决地址栏中传递中文字符乱码的问题
- JSP解决地址栏中传递中文字符乱码的问题
- 关于处理GET方式提交的含有特殊字符的参数jsp
- 关于处理GET方式提交的含有特殊字符的参数
- js中传递特殊字符&的方法
- webservice传递特殊字符时的解决办法
- JSP传递带特殊字符的参数。
- 使用Java API实现与CQTM系统的集成
- C++多继承带来的麻烦
- android修改系统时间问题
- 经典游戏(围圈数数,数到3者出圈,求最后幸存者)
- 指针使用面试题
- 地址栏(get方式)传值-当传递的值中含某些特殊字符的情况
- ACboy needs your help again!(堆栈的简单应用)
- MATLAB 画图:对数坐标轴
- 关于main函数的输入变量
- 修改 ssh 里的配置文件_ kill session
- android小程序--猜猜红桃A在哪儿
- Scheme函数式编程小试
- 中国网络游戏发展简史
- POJ2155 Matrix