我的php网站上有一些JavaScript代码 此代码使用jQuery,并构建一个<选择>菜单使用ajax调用。
这是代码
sel.append('<option value="' + data[i].id + '">' + data[i].nombre + '</option>');
这给了我以下警告
第240行第82栏 - 警告:'&lt;'这里不允许使用+'/'+字母
有谁知道如何修复此警告,以便我的html验证?感谢
答案 0 :(得分:10)
问题是任何</
序列(称为ETAGO)都会结束CDATA元素,例如<script>
。您可以在浏览器中使用</
,但不能</script
。
最简单的解决方法是使用反斜杠转义来分解</
序列:
sel.append('<option value="' + data[i].id + '">' + data[i].nombre + '<\/option>');
但是,这一行仍有问题,因为您没有HTML转义id
和nombre
值。如果它们可能包含<
,&
或"
,那么您自己就构建了一个客户端XSS漏洞!
因此,在将文本值放入字符串之前,要么HTML转义文本值,要么更简单,只需使用标准DOM:
sel.append(new Option(data [i] .nombre,data [i] .id));
答案 1 :(得分:4)
将javascript放在外部文件中。
答案 2 :(得分:1)
如果您在html / xhtml页面中编写javascript,则可以将javascript包含在CDATA中
<script type="text/javascript">
/* <![CDATA[ */
console.log("..js code here..");
/* ]]> */
</script>
答案 3 :(得分:1)
要在XHTML文档中包含未编码为XML的代码(我猜你正在尝试做什么),你需要做类似以下的事情:
<script type="text/javascript">
//<![CDATA[
alert("<This is now valid XHTML>");
//]]>
</script>
答案 4 :(得分:-2)
将<!--
和-->
放在代码周围。