在jQuery中解析HTML响应

时间:2010-11-29 20:46:25

标签: javascript jquery html-parsing

我的页面需要从另一个页面抓取一个特定的div,以显示在当前页面的div中。对于$.load来说,这是一个完美的工作,除了我从中提取的HTML源代码不一定是格式良好的,并且似乎偶尔会出现标记错误,而IE就是普通的,在这种情况下不会使用它。所以我已将其更改为$.get以获取页面的HTML源代码作为字符串。将其传递给$以将其解析为DOM在IE中与$.load具有相同的问题,因此我不能这样做。我需要一种方法来解析HTML字符串以查找div#information的内容,但不能查找</div>之后页面的其余部分。 (PS我的div#information包含各种其他div和元素。)

编辑:如果有人修复jQuery的$.load无法在IE中解析响应HTML,我也很乐意听到。

2 个答案:

答案 0 :(得分:1)

如果您尝试加载的资源在您的控制之下,则您的实施规范很难优化。当您只需要一小段内容时,您不想要求服务器提供整页内容。

您要做的是隔离您想要的内容,让服务器只返回您需要的内容。

作为旁注,因为您知道HTML格式不正确,所以您应该咬紧牙关并验证您的标记。这将为你节省一些麻烦(比如这个)。

最后,如果您真的无法优化此过程,我的猜测是您创建了一个不一致,因为解析后的HTML中的某些元素与当前页面上的元素具有相同的ID。相同的ID无效并导致许多跨浏览器的JavaScript问题。

答案 1 :(得分:0)

严格使用字符串,您可以使用正则表达式查找id="information"标记内容。永远不要将其解析为html。

我会尝试接受html选择器的$.load参数

$('#results').load('/MySite/Url #Information');