我在这里遇到了问题。当我使用ajax将包含“+”的参数传递给我的控制器时,它将被空格替换。
示例,我将使用ajax传递value = Tom+Jerry+Garfield
。当我在控制器中使用System.out.println()时,它会显示Tom Jerry Garfield
。我尝试使用其他特殊字符,我似乎没有问题。
请帮忙。提前谢谢。
答案 0 :(得分:10)
在某些GET
和POST
请求中(最有可能在URL中或通过表单),空格在传递到服务器之前会被编码为“+”(加号)符号。如果你执行正常的GET
请求,你会看到这种行为 - 你会看到类似google.com?q=test+example
的内容如果你想通过ajax GET / POST请求传递加号,你需要“urlencode”它。 +
的网址编码值为%2B
。
另请注意:
可以使用javascript encodeURIComponent()函数,如下所述:
答案 1 :(得分:2)
+
被解码为空格。如果您想传递+
,则需要对其进行编码。
答案 2 :(得分:2)
当我们将值传递给控制器时,有一个模型绑定器位于请求之间。当进行ajax调用时,url和请求被编码。 url解码形式中的“”(空格)字符编码为“+”。
另一方面,Model Binder对请求进行解码并提取参数并将其提供给控制器,因此“+”被转换为“”。
但问题是为什么会将“+”作为分隔符传递?