我的问题实际上很简单,但是尽管如此,我仍然需要在这里有深入了解的人。想象一下以下简单任务:将一些外部html数据加载/解析到当前html文件的元素中。
假设这是我们要检索的外部文件的内容:
<div id="element">
<img src="test.jpg"><br>
lorem ipsum
</div>
这是使用jQuery .load的代码
$("#div_in_mother_html").load("external.html #element");
像魅力。
但是在控制台中,我看到以下错误:
1. mismatched tag. Expected: <br />
2. mismatched tag. Expected: <img />
这是为什么?
好吧,很明显,.load是jquery中.ajax的简写,据我所知,这是一个跨浏览器的XMLHttpRequest。与XHTML不同,这可能会导致标签不匹配的问题,因为HTML标签不会关闭:
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); }
});
再次,它可以工作...但是相同的无提示错误也会显示在控制台中。
在本地环境中的firefox 32浏览器控制台中看到的错误。
我的猜测是,当您从文件系统工作时请求它时,出于某种原因将其解析为xml。实际上,您绝对不应该从文件系统中测试ajax,因为文件系统将永远不会返回与从真实服务器中获得的所有相同的标头。解决方法是设置在本地主机上运行的本地网络服务器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句