来自html元素的Jquery Parse JSON

时间:2016-09-28 17:02:14

标签: javascript jquery json parsing

我正在尝试将来自服务器的一些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来初始化模型。

2 个答案:

答案 0 :(得分:1)

function parse() {
  var span = document.querySelector('span');
  console.log(JSON.parse(span.textContent));
}
<span id="content">{"test" : "&lt;a href=\"http://cnn.com\"&gt;CNN&lt;/a&gt; Hello"}</span>
<button onclick="parse()">parse</button>

您的范围内的内容

<span id="content">{"test" : "<a href="http://cnn.com">CNN</a> Hello"}</span>

应该被转义

<span id="content">{"test" : "&lt;a href=\"http://cnn.com\"&gt;CNN&lt;/a&gt; Hello"}</span>

答案 1 :(得分:0)

您可以将html传递给JSON.stringify()

&#13;
&#13;
$(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;
&#13;
&#13;