ajax – 为什么jquery用空格(“”)替换“+”?

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

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

请帮忙。 提前致谢。

在某些GETPOST请求中(很可能在URL中或通过表单),空格在传递给服务器之前被编码为“+”(加号)符号。 如果您执行正常的GET请求,您会看到此行为 – 您会看到类似google.com?q=test+example如果您想通过ajax GET / POST请求传递加号,则需要“urlencode”它。 +的URL编码值是%2B

另请注意:

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

AJAX POST和Plus Sign(+) – 如何编码?

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

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