Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

java

jquery

ajax

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.

like image 879
NinjaBoy Avatar asked Jul 12 '12 07:07

NinjaBoy


2 Answers

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?

like image 192
compid Avatar answered Oct 06 '22 02:10

compid


+ is decoded as space after url decoding. If you want to pass +, you need to encode it.

like image 35
xdazz Avatar answered Oct 06 '22 01:10

xdazz