jQuery .ajax .load .get x(h)tml相关错误(“不匹配的标签,预期:<br/>”)

时间:2014-08-01 17:06:37

标签: jquery ajax parsing get load

我的问题其实很简单,但我需要有深入了解的人。想象一下以下简单的任务:将一些外部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浏览器控制台中看到错误。

1 个答案:

答案 0 :(得分:6)

我的猜测是,当你从文件系统工作时请求它时,它出于某种原因将其解析为xml。你真的不应该从文件系统测试ajax,因为文件系统永远不会返回你从真实服务器获得的所有相同的头文件。修复将是设置在localhost上运行的本地Web服务器。