zoukankan      html  css  js  c++  java
  • Ajax传递特殊字符-URL编码

    注:当你用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 - _ . ! ~ * ' ( )

    4.escape()方法和以上两者不是同一类

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

     5.何时用何种方法

    • 1、如果只是编码字符串,不和URL有半毛钱关系,那么用escape。
    • 2、如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。
    • 3、当你需要编码URL中的参数的时候,那么encodeURIComponent是最好方法。
  • 相关阅读:
    hdu 1263 水题一道
    hdu 1115 多边形重心
    hdu 4054 字符串处理
    梦想与实验:向阿里巴巴学习
    美国研究员开发电脑芯片模拟人脑工作
    阿里巴巴网站运营模式
    中文Alexa排名专业术语解释
    欧美两大3G标准正式成为我国行业标准
    网站优化的十大奇招妙技
    有志赚钱创业者 从这八个步骤开始
  • 原文地址:https://www.cnblogs.com/yxkNotes/p/11736606.html
Copyright © 2011-2022 走看看