如何在JavaScript上准备编码的POST数据?
我需要通过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()
函数escape()
函数编码一个字符串。 该函数使字符串具有可移植性,因此它可以通过任何网络传输到任何支持ASCII字符的计算机。此函数对特殊字符进行编码,但以下情况除外: * @ - _ + . /
* @ - _ + . /
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。
param1 = 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:你应该什么时候使用escape来代替encodeURI / encodeURIComponent?
另外,当您使用JQuery时 ,请查看此内置函数。
使用encodeURIComponent()作为encodeURI()将不会进行编码: ~!@#$&*()=:/,;?+'
以下链接已经很好地解释了这一点:
http://xkr.us/articles/javascript/encode-compare/
链接地址: http://www.djcxy.com/p/22151.html