Java ajax——为什么jquery会取代“ajax”+&引用;有空格(“)?
我这里有个问题。当我使用ajax将包含“+”的参数传递给我的控制器时,它将被一个空格替换 例如,我将使用ajax传递value=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请求,您可以看到这种行为-
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,+(加号)符号实际上是一种替代(旧)形式