1

我正在解析一个 JSON 对象并将数据显示到一个表中。但是,其中一些数据有括号,如 < 、 > 、 >= 、 <= 后跟字母或数字。在这种情况下,来自 JSOn 的数据如下所示:

    (rRandomString<iamNotaTAG)

附加后生成的html是这样的:

    (rRandomString
    <iamNotaTAG) td="" <=""></<iamNotaTAG)>

更新 1:我用来解析 JSON 的代码是这样的

    var json = $.parseJSON(data);
    for (var i = 0, maxlength = json.length; i < maxlength; i += 1 ) {
       my_string = json[i][1];
       result += "<tr class='my_result'>"
              + "<td>"+my_string+"</td></tr>"
    }
    $('#my_table tbody').html(result);
4

2 回答 2

3

您真正应该做的是将内容添加为文本而不是 HTML。这对您来说有点棘手,因为您要附加 HTML 结构。所以需要重新思考一下:

var result = $([]); // empty object

var json = $.parseJSON(data);
for (var i = 0, maxlength = json.length; i < maxlength; i += 1 ) {
   var my_string = json[i][1]; // this should really be locally defined, I think

   var newcontent = $('<td>')      // create a td element
       .text(my_string)            // add the content as text
       .wrap('<tr>')               // wrap the td in a new tr
       .parent()                   // go up to the tr
           .addClass('my_result'); // add the class to the tr

   result.add(newcontent);         // add the tr to the set of trs
}
$('#my_table tbody').html(result); // add all the trs to the tbody
于 2013-07-03T18:10:23.683 回答
2

只需在将字符串添加到生成的 html ( http://jsfiddle.net/cvAuB/ )之前转义字符串

var json = [[0, "some str"], [1, "some <str>"], [0, "some str &&& <a>not a link</a>"]], },           result = "", current;


var tagsToReplace = {
    '&': '&amp;',
    '<': '&lt;',
    '>': '&gt;'
}

function replaceTag(tag) {
    return tagsToReplace[tag] || tag;
}

function textify(str) {
    return str.replace(/[&<>]/g, replaceTag);
};
for (var i = 0, maxlength = json.length; i < maxlength; i++ ) {
   current = textify(json[i][1]);
   result += "<tr class='my_result'>"
          + "<td>"+current+"</td></tr>"
}

$('#my_table tbody').html(result);
于 2013-07-03T18:33:00.617 回答