Passing Value Including Spaces on Ajax Call

Trying to pass spaces along with ajax call.

'word' is been passed the same as 'word ' i believe so.

On the other hand two words need to be send completely with call.

'word second' but not the same as 'word second '

Should I trim before call or do this on server side script? How can I send spaces as well?

Answers:

Answer

I know this is an old question, but I'd like to point out that the accepted answer is suggesting a function that is deprecated as of JavaScript version 1.5.

Instead, you should use either encodeURI() or encodeURIComponent() for sending spaces and other special characters.

var param = encodeURIComponent("word second "); 
console.log(param); // outputs 'word%20second%20'

PHP on the other end will handle the decoding automatically. This leaves you free to trim the spaces where you find it most practical. If it really doesn't matter technically, I would trim the spaces in the JavaScript code using the trim() function because it saves a tiny bit of network bandwidth and eases server load slightly by trimming client-side.

Answer

To allow a parameter to include spaces, etc. you will want to use the javascript escape() [W3Schools] function.

escape( 'hello world ' ) = 'hello%20world%20';

The handling on the PHP side will automatically decode/unescape the parameter, restoring the spaces (along with any other characters which cannot be part of a parameter's value when sent through AJAX, such as "=" or "&".

Within PHP, if you are wanting to strip off any leading or trailing spaces, you can use the PHP trim() [PHP.net] function.

trim( 'hello world ' ) = 'hello world';
Answer

The simplest way, I think, is to encodeURIComponent string in javascript before sending xmlhttprequest, and then urldecode it in PHP

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.