Ajax POST方法将字符串中的“+”值转换为“”为什么?

问题描述:

我不知道为什么在ajax后“+”符号转换为“”。请解释?Ajax POST方法将字符串中的“+”值转换为“”为什么?

使用encodeURIComponent()功能把你的数据的有效编码数据的请求:

xhr.open("POST", url, true); 
xhr.send(encodeURIComponent(postdata)); 
+0

谢谢,我正在寻找一个正确的函数来转换。 – Kumar 2010-01-19 13:45:58

“+”是空格的url编码符号。因此,当您的发布数据解码时,“+”会转换为空格。

+0

+1赢得比赛,第一个回答。 – Langdon 2010-01-19 18:14:34

很有可能您在URL中使用+登录,因为它正确地转换为空格,因为+是空格字符的URLEncoded表示形式。

运行escape()无论您将什么值放入您的网址以将其转换为URL编码形式。

这就是URL编码的工作原理。如果你想要一个加号,那就是%2B,但是你应该只是转义或者编码你发送给服务器的数据。在here中输入“a + b c”。

这只是标准的url编码。加号被转换为服务器上的空格。如果你想传递一个加号,你需要将它转义为%2b。

这是因为URL Encoding将空格转换为+,因为空格在URL中无效。

通常将字符转换为%后跟两个十六进制数字,但使用+而不是%20可使URL更具可读性。

如果您将+编码为%2B应该有效。