6

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

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

请帮忙。提前致谢。

4

3 回答 3

11

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

另请注意:

可以使用 javascript encodeURIComponent() 函数,如回答:

AJAX POST 和加号 (+) -- 如何编码?

于 2012-07-12T08:01:26.113 回答
3

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

于 2012-07-12T08:02:37.127 回答
2

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

于 2012-07-12T08:03:35.587 回答