JavaScript中 - 如何通过Json传递数据通过数据传递
我通过Json传递一些数据到Web服务。 我的问题是,我通过HTML(从tinyMCE输入),所以var有内容使用引号,这给我的问题。 我传递的价值观是这样的:JavaScript中 - 如何通过Json传递数据通过数据传递
data: '{ id: "' + news_id + '", title: "' + news_title + '", body: "' + news_body + '" }',
反正有ESPACE在JavaScript引号,这样我就可以在news_body变种发送HTML?
感谢
中找到,而不是使用一次性的代码,去使用Javascript JSON编码器(例如由MooTools' JSON utility或JSON.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
}),
谢谢。现在它工作正常,但我有一个问题。我只是使用“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
该示例不是专门针对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) + '" }',
这对我有用: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
使用以下功能:
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
-1 - 这不起作用,因为它为单引号和双引号添加了斜杠。注意'''我们有''是JS字符串,但''我们''不**是一个有效的JS字符串,因为您试图在用双引号分隔的字符串中转义单引号。请参阅http://*.com/a/2275428/457571 – 2014-09-15 21:28:54
您可以在要转义的字符前使用“\”反斜杠字符转义特殊字符。对于例如使用\“来摆脱双引号 – 2010-10-27 08:46:12