我需要POST方法发送数据。
例如,我有字符串“BLA BLA - BLA和”。 我尝试使用encodeURI
,并获得“BLA BLA - BLA和”作为结果。 我需要在这个例子中正确的东西来代替“&”。
我应该叫什么样的方法来准备正确的POST数据?
更新:
我需要转换只可能爆发POST请求charachters。 只有他们。
我需要POST方法发送数据。
例如,我有字符串“BLA BLA - BLA和”。 我尝试使用encodeURI
,并获得“BLA BLA - BLA和”作为结果。 我需要在这个例子中正确的东西来代替“&”。
我应该叫什么样的方法来准备正确的POST数据?
更新:
我需要转换只可能爆发POST请求charachters。 只有他们。
>>> encodeURI("bla&bla&bla")
"bla&bla&bla"
>>> encodeURIComponent("bla&bla&bla")
"bla%26bla%26bla"
您还可以使用escape()
function.The escape()
函数中的字符串编码。 此功能使一个字符串便携,因此它可以在任何网络传输到支持ASCII characters.This功能将特殊字符编码任何一台计算机,以下除外: * @ - _ + . /
* @ - _ + . /
var queryStr = "bla&bla&bla";
alert(queryStr); //bla&bla&bla
alert(escape(queryStr)); //bla%26bla%26bla
使用unescape()
解码的字符串。
var newQueryStr=escape(queryStr);
alert(unescape(newQueryStr)); //bla&bla&bla
注意:
escape() will not encode: @*/+
encodeURI() will not encode: ~!@#$&*()=:/,;?+'
encodeURIComponent() will not encode: ~!*()'
互联网上一些搜索后,我得到了以下内容:
逃逸()
不要使用它。
是encodeURI()
当你想要一个工作URL使用是encodeURI。 拨打这个电话:
encodeURI("http://www.google.com/a file with spaces.html")
要得到:
http://www.google.com/a%20file%20with%20spaces.html
不要叫encodeURIComponent方法,因为它会破坏URL和返回
http%3A%2F%2Fwww.google.com%2Fa%20file%20with%20spaces.html
encodeURIComponent方法()
当你想编码URL参数一起使用encodeURIComponent方法。
参数1 = encodeURIComponent方法( “ http://xyz.com/?a=12&b=55 ”)
Then you may create the URL you need:
url = "http://domain.com/?param1=" + param1 + "¶m2=99";
你会得到这个完整的URL:
http://www.domain.com/?param1=http%3A%2F%2Fxyz.com%2F%Ffa%3D12%26b%3D55¶m2=99
需要注意的是encodeURIComponent
不逃避的性格。 一个常见的错误是用它来创建HTML属性如href='MyUrl',
这可能遭受喷射错误。 如果您是从字符串构建HTML,要么使用“,而不是‘为属性的报价,或加编码的一个额外层(’可以被编码为%27)。
REF: 你什么时候应该使用逃生,而不是是encodeURI / encodeURIComponent方法?
此外,由于使用的是JQuery的 ,看看这个内置的功能。
使用encodeURIComponent方法()作为是encodeURI()将不进行编码: ~!@#$&*()=:/,;?+'
这在以下链接解释了相当不错:
http://xkr.us/articles/javascript/encode-compare/
更近期的DOM API URLSearchParams (并通过URL ,可能其他人也)在某些情况下处理的编码。 例如,创建或使用现有的URL对象(像从一个锚定标记)一地图对象的条目,关键值对URL编码PARAMS(用于GET / POST /等,在应用程序/ x-WWW窗体-urlencoded MIME类型)。 注意表情符号,符号和双引号是如何没有任何特殊处理的编码(从复制的镀铬 devtools控制台):
var url = new URL(location.pathname, location.origin);
Object.entries({a:1,b:"