我在这里遇到问题。当我使用ajax传递一个包含“+”的参数给我的控制器时,它将被一个空格替换。ajax - 为什么jquery用空格(“”)替换“+”?
例如,我会通过使用ajax值= Tom+Jerry+Garfield
。当我在我的控制器中使用System.out.println()时,它显示Tom Jerry Garfield
。我尝试使用其他特殊字符,我似乎没有问题。
请帮忙。提前致谢。
我在这里遇到问题。当我使用ajax传递一个包含“+”的参数给我的控制器时,它将被一个空格替换。ajax - 为什么jquery用空格(“”)替换“+”?
例如,我会通过使用ajax值= Tom+Jerry+Garfield
。当我在我的控制器中使用System.out.println()时,它显示Tom Jerry Garfield
。我尝试使用其他特殊字符,我似乎没有问题。
请帮忙。提前致谢。
在某些GET
和POST
请求(最有可能在URL,或者通过一种形式),空格编码为“+”(加),他们被传递到服务器之前的符号。如果您执行正常的GET
请求,则可以看到此行为 - 您将看到类似google.com?q=test+example
的内容。如果要通过ajax GET/POST请求传递加号,则需要对其进行“urlencode”。 +
的URL编码值为%2B
。
还要注意:
的JavaScript encodeURIComponent方法()函数可以被使用,如在回答:
请注意,空间的“真实”编码实际上是%20,+(加号)符号实际上是替代(较旧)的形式http://stackoverflow.com/a/1634293/1407034 – compid 2012-07-12 08:10:17
+
被解码为URL解码后的空间。如果您想通过+
,则需要对其进行编码。
[URL查询部分的空格总是被编码为加号](http://tools.ietf.org/html/rfc3986#section-3.4)。所以你的控制器只是解码它们。听起来你没有正确地构建你的URL,因为它听起来像你想要一个加号(需要被编码)而不是一个空格。如果您使用%2B,它应该可以工作,但是您不应该像现在这样手动执行此操作。 – bzlm 2012-07-12 08:00:21
不是jQuery正在替换字符,服务器是... – 2012-07-12 08:01:03
@FelixKling你的意思是说tomcat正在这样做?这是什么解决方案? – NinjaBoy 2012-07-12 08:01:25