ajax - Why jquery replaces "+" with a space (" ")?

ajax, java, jquery

Solution

In some `GET` and `POST` requests (most likely in the URL, or via a form), spaces are encoded as "+" (plus) symbols before they are passed to the server. You can see this behaviour if you do a normal `GET` request - you will see something like `google.com?q=test+example` If you want to pass a plus symbol via an ajax GET/POST request, you need to "urlencode" it. The URL encoded value for `+` is `%2B`.

Also note:

The javascript encodeURIComponent() function can be used, as answered in:

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

Problem

I am having a problem here. When I use ajax to pass a parameter containing "+" to my controller it is being replaced by a space. Example, I will pass value = `Tom+Jerry+Garfield` using ajax. When I use System.out.println() in my controller it displays `Tom Jerry Garfield`. I tried using other special characters I don't seem to have a problem. Please help. Thanks in advance.

Original source

Related problems