JavaScript - 如何使用var中的转义引号来通过Json传递数据

时间:2010-10-27 08:42:34

标签: javascript json

我将一些数据通过Json传递给Webservice。 我的问题是我传递了html(来自tinyMCE输入),因此var的内容使用引号,这给了我一些问题。 我正在传递这样的值:

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

在javascript中是否有espace引号,所以我可以在那个news_body var中发送html?

由于

4 个答案:

答案 0 :(得分:13)

使用replace()方法:

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

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

答案 1 :(得分:12)

使用Javascript JSON编码器(例如由MooTools' JSON utilityJSON.js提供),而不是使用一次性代码,它将为您处理编码。大浏览器(IE8,FF 3.5 +,Opera 10.5 +,Safari和Chrome)通过JSON对象支持JSON编码和解码natively。编写良好的JSON库在存在时将依赖于本机JSON功能,并在不存在时提供实现。 YUI JSON library就是这样做的。

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

答案 2 :(得分:2)

使用以下功能:

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

例如:

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

可以在http://phpjs.org/functions/index

找到很多这样的功能

答案 3 :(得分:-1)

如果您熟悉PHP,则可以使用某些基于PHP的函数形式

phpjs.org

他们使javascript函数作为PHP库函数工作。你可以从这里使用addslashes函数。