Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Escape all special characters in a string that is sent by jquery ajax

Tags:

I am trying to send text in key value pairs while doing a contentType: "application/json; charset=utf-8", ajax post to a web service. The problem I am facing is that if one of the parameters (that accepts text from the user) has quotes (") it breaks the code [Eror message: Invalid object passed in ] . So far I have tried these without any success

var text = $("#txtBody").val(); 
var output1 = JSON.stringify(text); 
var output2 = text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); 

Any ideas on how to escape the special characters for the jquery ajax post?

like image 309
developer747 Avatar asked Apr 12 '12 23:04

developer747


People also ask

How do you pass special characters parameters in Ajax?

You can try adding the special characters inside the encodeURIComponent() method and it works.

What is escape () in JS?

The escape() function in JavaScript is used for encoding a string. It is deprecated in JavaScript 1.5.

How do you escape characters in a string?

In the platform, the backslash character ( \ ) is used to escape values within strings. The character following the escaping character is treated as a string literal.

How do you escape a special character in JavaScript?

To use a special character as a regular one, prepend it with a backslash: \. . That's also called “escaping a character”.


1 Answers

Why not use escape?

escape(text);

https://developer.mozilla.org/en/DOM/window.escape

EDIT!!!!

As mentioned in comments, this is deprecated.

The deprecated escape() method computes a new string in which certain characters have been replaced by a hexadecimal escape sequence. Use encodeURI or encodeURIComponent instead.

Instead use one of the following:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

like image 187
Trevor Avatar answered Oct 27 '22 09:10

Trevor