简体   繁体   中英

JavaScript - How escape quotes in a var to pass data through Json

I'm passing some data through Json to a Webservice. My problem is that i'm passing html (from a tinyMCE input), so the var has content using quotes and that's giving me problems. I'm passing the values like this:

 data: '{ id: "' + news_id + '", title: "' + news_title + '", body: "' + news_body + '" }',

Is there anyway to espace quotes in javascript, so i can send html in that news_body var?

Thanks

Use the replace() method:

function esc_quot(text)
{
    return text.replace("\"", "\\\"");
}

data: '{ id: "' + esc_quot(news_id) + '", title: "' + esc_quot(news_title) + '", body: "' + esc_quot(news_body) + '" }',

Rather than using one-off code, go with a Javascript JSON encoder (such as provided by MooTools' JSON utility or JSON.js ), which will take care of encoding for you. The big browsers (IE8, FF 3.5+, Opera 10.5+, Safari & Chrome) support JSON encoding and decoding natively via a JSON object. A well-written JSON library will rely on native JSON capabilities when present, and provide an implementation when not. The YUI JSON library is one that does this.

data: JSON.stringify({
  id: news_id,
  title: news_title,
  body: news_body
}),

Use the function below:

function addslashes (str) {
    return (str+'').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}

For example:

data: '{ id: "' + addslashes(news_id) + '", title: "' + addslashes(news_title) + '", body: "' + addslashes(news_body) + '" }',

A lot of functions like this can be found at http://phpjs.org/functions/index

if you are familiar with PHP that you can use some PHP based function form

phpjs.org

They made javascript function worked as PHP library functions. You can use addslashes function from here.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM