我正在解析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);
答案 0 :(得分: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
答案 1 :(得分: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 = {
'&': '&',
'<': '<',
'>': '>'
}
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);