修复HTML Validator抛出的警告

Enr*_*que 4 javascript php validation xhtml jquery

我的php网站上有一些JavaScript代码.
此代码使用jQuery,并使用ajax调用构建<select>菜单.

这是代码

sel.append('<option value="' + data[i].id + '">' + data[i].nombre + '</option>');
Run Code Online (Sandbox Code Playgroud)

这给了我以下警告

第240行第82栏 - 警告:此处不允许使用'<'+'/'+字母

有谁知道如何修复此警告,所以我的HTML验证?谢谢

bob*_*nce 10

问题在于任何</序列(称为ETAGO)都会结束CDATA元素,例如a <script>.您可以</在浏览器中使用,但不能</script.

最简单的解决方法是</使用反斜杠转义来分解序列:

sel.append('<option value="' + data[i].id + '">' + data[i].nombre + '<\/option>');
Run Code Online (Sandbox Code Playgroud)

但是这行仍有问题,因为你不是HTML转义你的idnombre值.如果它们可能包含<,&或者"您刚刚建立了自己的客户端XSS漏洞!

因此,在将文本值放入字符串之前,要么HTML转义文本值,要么更简单,只需使用标准DOM:

sel.append(new Option(data [i] .nombre,data [i] .id));