我正在尝试将来自服务器的一些JSON解析为我可以在Javascript中使用的对象。服务器在跨度内保存JSON。当我单击操作按钮时,它应该获取JSON并将其解析为对象。不幸的是,我得到了一个例外。请参阅代码:
$(function(){
$("#btn").click(function(elem){
var elem = $("#content");
var html = elem.html();
console.log(html);
var x = JSON.parse(html);
console.log(x);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<button id="btn">Action</button>
<br/><br/>
<span id="content">{"test" : "<a href=\"http://cnn.com\">CNN</a> Hello"}</span>
</body>
我也尝试了跨度中的内容而没有逃避“:
<span id="content">{"test" : "<a href="http://cnn.com">CNN</a> Hello"}</span>
知道如何解决?
背景说明:这是在角度app中使用,需要接收json来初始化模型。
答案 0 :(得分:1)
function parse() {
var span = document.querySelector('span');
console.log(JSON.parse(span.textContent));
}
<span id="content">{"test" : "<a href=\"http://cnn.com\">CNN</a> Hello"}</span>
<button onclick="parse()">parse</button>
您的范围内的内容
<span id="content">{"test" : "<a href="http://cnn.com">CNN</a> Hello"}</span>
应该被转义
<span id="content">{"test" : "<a href=\"http://cnn.com\">CNN</a> Hello"}</span>
答案 1 :(得分:0)
您可以将html
传递给JSON.stringify()
$(function(){
$("#btn").click(function(elem){
var elem = $("#content");
var html = elem.html();
console.log(html);
var x = JSON.parse(JSON.stringify(html));
console.log(x);
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<button id="btn">Action</button>
<br/><br/>
<span id="content">{"test" : "<a href=\"http://cnn.com\">CNN</a> Hello"}</span>
</body>
&#13;