Ajax传递特殊字符(引号)

使用escape()可以直接对字符串进行处理,使用需注意以下几点:

  1. escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。
  2. 编码之后的效果是%XX或者%uXXXX这种形式。
  3. 其中 ASCII字母、数字、@*/+ ,这几个字符不会被编码,其余的都会。
  4. 最关键的是,当你需要对URL编码时,忘记这个方法,这个方法是针对字符串的,不适用URL。

后台java还原字符串:

  • java.net.URLDecoder.decode(form.getSql(),"utf-8");

扩展资料

注:当你用ajax传递值到服务器端,如果值中包含特殊字符串如+,&等,在服务器端获取的结果可能就会出现差异,因为这些字符有其它用途,如“+”表示连接符,在转义后你获取到的就是空格。

解决方法:

  • 如果变量中确实需要包含这些特殊字符,请用encodeURIComponent()函数过滤,它会对这些字符编码,服务器端是会被自动解码的,不需要处理。
  • 尽量提交json格式数据 如 {a:"aaa", b:"bbb"}  而非 "a=aaa&b=bbb"

1.encodeURL()

  1. encodeURI(URIstring)函数可把字符串作为 URI 进行编码。
  2. 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ’ ( ) 。
  3. 该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?: @&=+$,#
  4. 如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。

2.encodeURIComponent()

  1. encodeURIComponent(URIstring)函数可把字符串作为 URI 组件进行编码。
  2. 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ’ ( ) 。
  3. 其他字符(比如 :;/?: @&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

3.二者区别

  1. encodeURI: 不编码的符号是: A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( )
  2. encodeURIComponent: 不编码的符号是:A-Z a-z 0-9 - _ . ! ~ * ' ( )

 5.何时用何种方法

  • 1、如果只是编码字符串,不和URL有半毛钱关系,那么用escape。
  • 2、如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。
  • 3、当你需要编码URL中的参数的时候,那么encodeURIComponent是最好方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值