繁体   English   中英

如何在 Javascript 中请求 HTML 文档?

[英]How do I request an HTML document in Javascript?

我知道我可以使用 XMLHttpRequest 发送对 XML 文档的请求,该文档还将解析收到的 XML 文档。 不幸的是,这不会一直与 HTML 一起工作。 与 XML 不同,HTML 有一些不需要关闭的标签(例如 <img> 标签)。 XML 总是关闭一个标签,要么像这样的自关闭 <mytag/> 要么像这样的一对标签 <mytag> </mytag>。 XMLHttpRequest 尝试解析接收到的 XML,但如果是 HTML 带有未关闭的标签,它将失败。 有没有更好的方法让 Javascript 下载并解析包含未闭合标签的 HTML 文档?

我知道我可以使用XMLHttpRequest发送对 XML 文档的请求,该文档还将解析收到的 XML 文档。

的,但你的理解是不完整的。 XMLHttpRequest不仅可以用于 XML 文档,还可以用于任何HTTP 请求(仅限跨域活动,而不是内容)。

不幸的是,这不会一直与 HTML 一起工作。 与 XML 不同,HTML 有一些不需要关闭的标签(例如<img>标签)。 XML 总是关闭一个标签,或者像这样的<mytag />自动关闭,或者像这样的一对标签<mytag></mytag>

You are correct insofar as HTML is not XML (indeed: HTML was an application of SGML, as was XML, but since HTML5 it's it's own thing ), and HTML cannot be reliably parsed as XML. However you are completely incorrect about XMLHttpRequest being unable to handle HTML responses: in a web-page JavaScript environment you can load the HTML responses into the main document DOM, or a separate document fragment and let the browser parse the HTML5 tag-soup just like一个正常的网页请求。

XMLHttpRequest尝试解析接收到的 XML,但如果是 HTML 带有未关闭的标签,它将失败。

你误会了: 如果你告诉它XMLHttpRequest只会尝试将响应解析为 XML 。 如果您告诉XMLHttpRequest以文本/ string或 JSON blob 形式给您响应,您也可以这样做。

有没有更好的方法让 Javascript 下载并解析包含未闭合标签的 HTML 文档?

是的: 您设置responseType = 'document' - 指示XMLHttpRequest期待并处理 HTML 文档响应,该响应将通过(令人困惑的命名!) responseXML属性公开。

但是,现在是 2021 年 - 你不应该使用XMLHttpRequest - 你应该使用fetch代替: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM