Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ajax——为什么jquery会取代“ajax”+&引用;有空格(“)?_Java_Jquery_Ajax - Fatal编程技术网

Java ajax——为什么jquery会取代“ajax”+&引用;有空格(“)?

Java ajax——为什么jquery会取代“ajax”+&引用;有空格(“)?,java,jquery,ajax,Java,Jquery,Ajax,我这里有个问题。当我使用ajax将包含“+”的参数传递给我的控制器时,它将被一个空格替换 例如,我将使用ajax传递value=Tom+Jerry+Garfield。当我在控制器中使用System.out.println()时,它会显示Tom Jerry Garfield。我试过使用其他特殊字符,但似乎没有问题 请帮忙。提前感谢。在一些GET和POST请求中(很可能在URL中,或通过表单),空格在传递到服务器之前被编码为“+”(plus)符号。如果您执行一个普通的GET请求,您可以看到这种行为-

我这里有个问题。当我使用ajax将包含“+”的参数传递给我的控制器时,它将被一个空格替换

例如,我将使用ajax传递value=
Tom+Jerry+Garfield
。当我在控制器中使用System.out.println()时,它会显示
Tom Jerry Garfield
。我试过使用其他特殊字符,但似乎没有问题


请帮忙。提前感谢。

在一些
GET
POST
请求中(很可能在URL中,或通过表单),空格在传递到服务器之前被编码为“+”(plus)符号。如果您执行一个普通的
GET
请求,您可以看到这种行为-您将看到类似于
google.com?q=test+example
的内容如果您希望通过ajax GET/POST请求传递加号,则需要对其进行“urlencode”。
+
的URL编码值为
%2B

另请注意:

可以使用javascript encodeURIComponent()函数,如中所述:


+
在url解码后被解码为空格。如果要传递
+
,则需要对其进行编码。

当我们将值传递给控制器时,有一个模型绑定器位于请求之间。在进行ajax调用时,url和请求被编码。url解码形式中的“”字符(空格)编码为“+”
另一方面,模型绑定器解码请求并提取参数并将其提供给控制器,因此“+”被转换为“”。
但这里的问题是为什么一个传递“+”作为分隔符

。所以你的控制器只是在解码它们。听起来你没有正确地构建你的URL,因为听起来你想要一个加号(需要编码)而不是一个空格。如果您改用%2B,它应该可以工作,但您不应该像现在这样手动执行此操作。不是jQuery正在替换字符,服务器是…@FelixKling您的意思是tomcat正在这样做?这个问题的解决方案是什么?可能的副本我不认为它是作为分隔符,而是作为一个实际的加号(“汤姆加杰瑞加加菲”)。@bzlm-可能是这样的。。。在这种情况下,可能需要使用%2B。但是我仍然对用例感到疑惑!请注意,空间的“实”编码实际上是%20,+(加号)符号实际上是一种替代(旧)形式