我有一些jQuery代码,如果没有它在文档中传递验证很好,但是它会导致错误。有问题的代码在这里:
$.ajax({
type: "GET",
url: "data.xml",
dataType: "xml",
success: function(xml) {
//Update error info
errors = $(xml).find("Errors").find("*").filter(function ()
{
return $(this).children().length === 0;
});
if (errors.length == 0)
{
statuscontent = "<img src='/web/resources/graphics/accept.png' alt='' /> System OK";
}
else
{
statuscontent = "<img src='/web/resources/graphics/exclamation.png' alt='' /> "+errors.length+" System error"+(errors.length>1?"s":"");
}
$("#top-bar-systemstatus a").html(statuscontent);
//Update timestamp
$("#top-bar-timestamp").html($(xml).find("Timestamp").text());
//Update storename
$("#top-bar-storename").html("Store: "+$(xml).find("StoreName").text());
}
});
页面上有很多其他jQuery代码,这些代码都运行良好并且没有错误,因此我无法理解这有什么问题。页面不是“实时”,所以不幸的是无法提供链接。
它列出的错误是
文档类型不允许元素“img”在这里
它指向的代码行在这里:
statuscontent = "<img src='/web/resources/graphics/accept.png' alt='' /> System OK";
statuscontent
答案 0 :(得分:9)
这是因为您使用的是XHTML。这确实是无效的,因为验证器的行为就好像脚本标记之间的代码是XML(XHTML是XML的子集)。这是无效的XHTML,因为img
- 标记不属于script
- 标记。
要使其验证,请使用CDATA来转义脚本中的任何XML。
<script type="text/javascript">
// <![CDATA[
... your code
// ]]>
</script>
在HTML 5中,这不是问题。如果您创建一个新网站,我建议使用HTML 5而不是XHTML。仅在修改现有网站时才使用XHTML。
答案 1 :(得分:1)
请参阅“与HTML 5的差异”中的Script and Style Elements。
接下来请看the comparable section in the XHTML Media Types document,因为您几乎可以肯定将XHTML作为HTML兼容性提供服务。
(那么你可能会做我在99年做过的事情,就是举起你的手,尖叫着“如果我不得不假装它是HTML,那么使用XHTML有什么意义?!”然后跑回来到HTML 4.01。(或者可能在HTML 5上))