根据我所阅读的内容(例如this article),您需要在以JSON格式发送HTML时转义\
和"
。
我想使用unescape()
,但自JS 1.5以来它已被弃用。
" 使用decodeURI()或decodeURIComponent()代替",w3schools建议。但decodeURI()
或decodeURIComponent()
不会逃避\
和"
。
我得到的回应看起来像是:
"html": {
"searchresult": "<div class=\\\"item\\\">\n\t\t\t<article class=\\\"unit\\\">\n\t\t\t\t<a href=\\\"page2.html\\\">Link<\\/a>\n\n\t\t\t\t\n\t\t\t<\\/article>\n\t\t<\\/div>"
}
然后我将以下内容保存为var markup
:
return $('<textarea/>').html( response ).val();
最后还剩下这个半工作的HTML
<div class=\"item\"> <article class=\"unit\"> <a href=\"page2.html\">Link<\/a> <\/article> <\/div>
我现在需要删除\
之前的所有"
和/\
才能正常工作。猜测删除标签之间的空白可能是一个奖励。
我尝试过以下内容删除\"
,效果很好。
markup.replace('\\"', '"');
但我无法弄清楚如何删除/\
(加上.replace(blah).replace(blah)感觉不对)。
This article给了我一个提示,但我仍然感到迷失在Regexp的魔法世界中。
任何帮助非常感谢!
答案 0 :(得分:2)
你还没有说出你的数据来自哪里,但我会假设你有一个有效的HTML字符串(显然包含换行符和标签),显然你正试图让它成为JSON中对象内searchresult
对象的html
属性。这是你如何做到的:
var json = JSON.stringify({html: yourString});
示例:
var yourString =
'<div class="item">\n\t\t\t<article class="unit">\n\t\t\t\t<a href="page2.html">Link</a>\n\n\t\t\t\t\n\t\t\t</article>\n\t\t</div>';
var json = JSON.stringify({html: yourString});
snippet.log("The JSON:");
snippet.log(json);
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
答案 1 :(得分:0)
如果要将整个字符串中的\“更改为”。
markup.toString().replace(/\\"/g,'"');