我正在使用Zend Framework。我有一个包含一些字段的表单,所有字段都是type="text"
,包括一个名为“Telephone”的输入。提交时,我使用Ajax将数据发送到Controller。那么这是我的问题,如果我输入+
符号,例如:
+34-666666666
我收到的数据是34-666666666
。 +
符号变成空格。这个问题只发生在+
,我已经尝试过所有符号并且没有问题。我很生气,我没有在谷歌找到任何解决方案。
答案 0 :(得分:3)
在URL中使用+
符号来表示空格。您的ajax提交可能正在执行GET请求,并且URL字符串中的+
正在转换。
在使用encodeURIComponent()
提交ajax请求之前,请通过javascript清理您的输入。
您可能还会发现此问题很有用:Plus character in URL transformed to space on a linux box。
此问题讨论encodeURIComponent
:How to encode a URL in Javascript?
答案 1 :(得分:3)
您需要按照here所述对GET / POST数据进行编码。 JavaScript encodeURIComponent
函数可以稍加使用*:
对于application / x-www-form-urlencoded(POST),根据规格,空格是 由'+'替换,因此可能希望遵循encodeURIComponent 用“+”替换“%20”替换。
"&phone=" + encodeURIComponent("+34-666666666").replace(/%20/, "+"); // "&phone=%2B34-666666666"
"&phone=" + encodeURIComponent("+34-666666666 x123").replace(/%20/, "+"); // "&phone=%2B34-666666666+x123"
*注意:URL中+
字符的处理方式取决于它是在路径组件中使用还是在查询字符串中使用:
http://example.com/page+1
- 文件名page+1
http://example.com/page%201
- 文件名page 1
http://example.com/?file=page+1
- 查询字符串参数file=page 1
http://example.com/?file=page%201
- 查询字符串参数file=page 1