当我尝试解析经过JSON验证的字符串时,收到此错误(“JSON.parse:意外字符”)。当我删除需要转义的字符时,它完美地工作(style =“width:400px;”)。我错过了什么?在使用parseJSON之前是否有一种转义字符的独特方法?
var $cookieString = '{"youTabItems": { "youTab-001": <p style=\"width:400px;\">Welcome to my test</p>, "youTab-002": "test02Value", "youTab-003": "test03Value" }}';
var $myCookieString = $.parseJSON($cookieString);
logThis($myCookieString);
更新
我能够让大部分工作正常,直到我开始保存/从Cookie中检索。现在,它在分号后切断了内容......对此有何想法?我在quirsmode.com上使用了3个函数来获取cookie功能(如下所示)。
function setCookie(name, value, days) { var date, expires; if (days) { date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toGMTString(); } else { expires = ""; } document.cookie = name + "=" + value + expires + "; path=/"; }
function getCookie(name) { var nameEQ = name + "=", ca = document.cookie.split(';'), c, i; for (i = 0; i < ca.length; i++) { c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1, c.length); } if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length, c.length); } } return null; }
function eraseCookie(name) { setCookie(name, "", -1); }
var cookieObject = {"youTabItems": { "youTab-001": "<p style=\"width:400px;\">Welcome to my test</p>", "youTab-002": "test02Value", "youTab-003": "test03Value" }};
var cookieString = JSON.stringify($cookieVal);
setCookie('youTabItems', cookieString, 28);
答案 0 :(得分:6)
var $cookieString = '{"youTabItems": { "youTab-001": "<p style=\\"width:400px;\\">Welcome to my test</p>", "youTab-002": "test02Value", "youTab-003": "test03Value" }}';
var $myCookieString = $.parseJSON($cookieString);
将html包装为字符串以使JSON有效。
为什么要双斜线?
blackslash是JavaScript字符串中的转义字符。这意味着我们必须将其自身转义为创建文字黑名单。我们需要一个字面反斜杠作为JSON中的转义字符。
示例:
var json = '{"foo": "\\""}';
将创建字符串
{"foo": "\""}
这是有效的JSON。如果我们只有一个反斜杠,它会创建
{"foo": """}
无效。
注意:这只是因为您的JSON在JavaScript字符串中。如果您提供服务,例如作为HTTP响应,您只需要一个反斜杠。但是,无论您使用什么来创建JSON都会自动转义引号,因此您不必处理它。
<强>更新强>
将数据存储在cookie中的更好方法是:
var cookieObject = {"youTabItems": { "youTab-001": "<p style=\"width:400px;\">Welcome to my test</p>", "youTab-002": "test02Value", "youTab-003": "test03Value" }};
var cookieString = JSON.stringify(cookieObject);
答案 1 :(得分:0)
第一项未包含在引号中:
"youTab-001": "<pstyle=\"width: 400px;\">Welcometomytest</p>",
答案 2 :(得分:0)
<p style=\"width:400px;\">Welcome to my test</p>
是字符串值吗?然后必须引用