更好的方法:
encodeURIComponent转义除以下内容之外的所有字符:alphabetic, decimal digits, - _ . ! ~ * ' ( )
为了避免对服务器的意外请求,您应该对任何用户输入的参数调用encodeURIComponent,这些参数将作为URI的一部分传递。例如,用户可以为变量注释键入“Thyme&time = again”。不对此变量使用encodeURIComponent将再次给出comment = Thyme%20&time =。请注意,&符号和等号表示新的键和值对。因此,不是让POST注释键等于“Thyme&time = again”,而是有两个POST键,一个等于“Thyme”,另一个(时间)等于。
对于application / x-www-form-urlencoded(POST),根据http://www.w3.org/TR/html401/interac...m-content-type,空格将替换为'+',所以可能希望跟随encodeURIComponent替换,并使用“+”替换“%20”。
如果希望更加严格遵守RFC 3986(保留!,',(,)和*),即使这些字符没有正式的URI分隔用法,也可以安全地使用以下内容:function fixedEncodeURIComponent (str) {
return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");}