ajax – 为什么jquery用空格(“”)替换“+”?
我在这里遇到了问题。 当我使用ajax将包含“+”的参数传递给我的控制器时,它将被空格替换。
例如,我将使用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()函数,如下所述:
AJAX POST和Plus Sign(+) – 如何编码?
url解码后, +
被解码为空格。 如果要传递+
,则需要对其进行编码。
当我们将值传递给控制器时,有一个模型绑定器位于请求之间。 当进行ajax调用时,url和请求被编码。 url解码forms中的“”(空格)字符编码为“+”。
另一方面,Model Binder对请求进行解码并提取参数并将其提供给控制器,因此“+”被转换为“”。 但问题是为什么会将“+”作为分隔符传递?