JavaScript中 - 如何通过Json传递数据通过数据传递

JavaScript中 - 如何通过Json传递数据通过数据传递

问题描述:

我通过Json传递一些数据到Web服务。 我的问题是,我通过HTML(从tinyMCE输入),所以var有内容使用引号,这给我的问题。 我传递的价值观是这样的:JavaScript中 - 如何通过Json传递数据通过数据传递

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

反正有ESPACE在JavaScript引号,这样我就可以在news_body变种发送HTML?

感谢

+3

您可以在要转义的字符前使用“\”反斜杠字符转义特殊字符。对于例如使用\“来摆脱双引号 – 2010-10-27 08:46: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 
}), 
+0

谢谢。现在它工作正常,但我有一个问题。我只是使用“JSON.stringify”(我的浏览器是FF 3.6.11),所以它没有YUI JSON库的实现。但我应该如何处理旧版浏览器?我想对于旧的浏览器,它应该使用YUI像这样“YAHOO.lang.JSON.stringify”,但我需要改变任何东西或只使用数据:JSON.stringify浏览器检查JSON.stringify,如果它是一个旧的浏览器,它会使用YAHOO.lang.JSON.stringify代替?谢谢 – 2010-10-27 09:20:22

+0

该示例不是专门针对YUI的。如果你选择依赖YUI,你会使用它的API,并让它在底层做任何事情。对于更轻的库,请仔细查看开源[JSON.js](http://www.JSON.org/json2.js)。它是透明的,只有当本地版本不存在时才实现全局JSON对象。随着更多浏览器支持本机JSON对象(它是[ECMAScript 3.1](http://wiki.ecmascript.org/doku.php?id=es3.1:json_support)标准的一部分),您最终可以淘汰JSON。只是不包括它,而YUI则需要重写代码。 – outis 2010-10-27 09:47:38

使用replace()方法:

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

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

这对我有用:var buttons = [{”type“:”social“},{”type“:”embed“},{”type“:”link“,”url“ :“http://www.saukvalley.com/”},{“type”:“email”,“advertiser”:“Bob's Refrigeration”,“to”:“[email protected]”}; api,我将它填充到元素的数据按钮attr中,然后在单击元素时将其取出。在设置元素的attr之前,我做了:buttons = buttons.replace(“'”,“\\\”“);编辑:*没有转义数组对象的FYI。 – Cody 2012-11-19 20:14:08

如果您熟悉PHP,你可以使用一些基于PHP函数形式

phpjs.org

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

使用以下功能:

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

+0

-1 - 这不起作用,因为它为单引号和双引号添加了斜杠。注意'''我们有''是JS字符串,但''我们''不**是一个有效的JS字符串,因为您试图在用双引号分隔的字符串中转义单引号。请参阅http://*.com/a/2275428/457571 – 2014-09-15 21:28:54