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

时间:2012-07-12 07:57:33

标签: java jquery ajax

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

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

请帮忙。提前谢谢。

3 个答案:

答案 0 :(得分:10)

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

另请注意:

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

AJAX POST and Plus Sign ( + ) -- How to Encode?

答案 1 :(得分:2)

在url解码后,

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

答案 2 :(得分:2)

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