字符串在附加时被解释为HTML标记
String being interpreted as an HTML tag when appending it
我正在解析一个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);
您真正应该做的是将内容添加为文本而不是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
在将字符串添加到结果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);
相关文章:
- 注入的HTML仅在Dom中解释为字符串
- 我收到消息“资源解释为脚本,但使用 MIME 类型文本/html 传输”
- Javascript和Firefox中基于jQuery的HTML解析:无法解释行为
- 如何在PhantomJS中使用iframes获得完整的解释html源代码
- 使浏览器将 txt 解释为 html
- 如何解决“资源解释为脚本但使用 MIME 类型文本/html 传输”
- Django,html标签未解释
- 关于浏览器如何解释 HTML/CSS/Javascript
- Chrome 扩展程序会提取错误的元数据,而不会重新加载整页(原始 HTML 和浏览器解释之间存在差异)
- 来自节点 js 的 HTML 代码不会被浏览器解释为这样
- $.ajax表单使用JSONP提交给Google文档:“;被解释为脚本但用MIME类型text/html传输的资源”;
- 在Javascript字符串文本中解释HTML标记
- 有人能给我解释一下这个HTML/Javascript部分吗
- Flask:资源被解释为样式表,但使用MIME类型text/html传输
- Apache将JavaScript脚本解释为text/html
- 选择器在我的网站上被解释为HTML.攻击者可以轻易利用此漏洞吗
- 将html附加为变量不会解释标记
- 字符串在附加时被解释为HTML标记
- innerHTML没有't解释HTML标记
- 不要在 iframe 中解释 html,而是从 html 中获取信息