如何使用带有JSON数据的jQuery显示解码的html文本

时间:2019-01-10 21:35:32

标签: javascript jquery

我有一个带有body标签的JSON文本,例如:

[
    {
      "body":<ul>\n<li>Place item in the <strong>box.<\/strong,
      "category":"A",
      "title":"A box",
      "keywords":"bread bag tag, milk bag tag, elastic band, rubber band, twist tie, rope, twine, string, hemp, ribbon, bow, burlap, staple";
   }
]

(原始JSON文件的语法正确) JSON文件具有许多带有标题,正文和关键字的标签。我应该用关键字搜索(从html的输入框中),匹配然后显示标题和正文。我可以毫无问题地显示标题。我可以像这样显示身体

<ul><li>Place item in the <strong>box</strong></li>

我尝试在所有组合中使用.html()、. text(),$。parseHTML。 这是代码段:

    $.getJSON(url, function(response)
    {
        if(response.length)
        {
            $('#table_item').empty();
            var content = '';
            for(var i = 0; i < response.length; i++)
            {
            if((response[i].keywords).indexOf(key) != -1)
            {
                content += '<div class="row"><div class="column"><div>';
                content += response[i].title;
                content += '</div></div><div class="column"><div id="bbody"><p>';
                var bodyJson = response[i].body;
                $("#bbody").html(bodyJson).text();
                $("#bbody").html($("#abody").html(bodyJson)); //THIS LINE
                content += '</p></div></div></div>';
                }
            }
            $('#table_item').append(content);
        }
    });

我不能做的就是写出应该的样子,即项目符号和粗体:

  • 将项目放入框中
  • 让我知道您是否需要更多信息,或者我是否以错误的方式提问。非常感谢!

    2 个答案:

    答案 0 :(得分:0)

    您需要添加一个工具来进行解码

    <script src="https://www.strictly-software.com/scripts/downloads/encoder.js"></script>
    

    然后将您的代码更改为此:

    content += Encoder.htmlDecode(unescape(bodyJson));
    

    那么您不必使用jQuery来.html()

    答案 1 :(得分:0)

    我为您结帐了codepen。我使用$.parseHTML将转义的html放入节点对象,然后使用nodeValue属性从那里附加了它。

    从服务器接收JSON时,请确保使用JSON.parse将其转换为JS对象而不是JSON对象。

    查看$.parseHTML了解更多信息。

    希望这对您有所帮助。如果需要更多帮助,请给我发消息。 :D欢呼!