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?
You can try adding the special characters inside the encodeURIComponent() method and it works.
The escape() function in JavaScript is used for encoding a string. It is deprecated in JavaScript 1.5.
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.
To use a special character as a regular one, prepend it with a backslash: \. . That's also called “escaping a character”.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With