我的问题其实很简单,但我需要有深入了解的人.想象一下以下简单的任务:将一些外部html数据加载/解析为当前html文件的元素.
假设这是我们想要检索的外部文件的内容:
<div id="element">
<img src="test.jpg"><br>
lorem ipsum
</div>
Run Code Online (Sandbox Code Playgroud)
这是使用jQuery .load的代码
$("#div_in_mother_html").load("external.html #element");
Run Code Online (Sandbox Code Playgroud)
像魅力一样工作.
但是在控制台中查看,我发现以下错误:
1. mismatched tag. Expected: <br />
2. mismatched tag. Expected: <img />
Run Code Online (Sandbox Code Playgroud)
这是为什么?
很明显,.load是jquery中.ajax的简写,据我所知,这是一个跨浏览器的XMLHttpRequest.这可能会导致标签问题不匹配,因为HTML标签不会关闭,与XHTML不同:
HTML - <img src="test.jpg"><br>
XHTML - <img src="test.jpg" /><br />
下一次尝试
好吧我说,必须可以解析XML而不是HTML.是的,jQuery的文档也是这样说的.我从.load切换到更高级的.ajax并尝试手动设置数据类型:
$.ajax({ type:'GET', url:'ajax.txt', contentType: "text/plain; charset=utf-8",
dataType:'text', success:function(data){
$('#div_in_mother_html').html(data); }
});
Run Code Online (Sandbox Code Playgroud)
它再次起作用......但是同样的静音错误出现在控制台中.
在本地环境中的Firefox 32浏览器控制台中看到错误.