场景如下:
我想使用 Javascript 进行一些 HTTP API 调用,并在浏览器中加载响应。请求可能是 GET
、POST
、PUT
或 DELETE
,返回的响应可以是任何类型内容 - 它可能是 HTML、JSON、XML 或图像、文档、二进制内容或其他任何内容。我希望浏览器以与浏览器加载新页面时完全相同的方式处理响应。
问题是我看不到任何方式来加载我收到的任意内容。
显然可以将内容加载到 DOM 中,但这只允许我处理 HTML。 (并可能嵌入一些媒体类型,如图像等)我没有看到任何明显的方法来处理嵌入响应类型,如 JSON 和 XML,而不必为如何将每种类型呈现为 HTML 构建特殊情况。
我考虑过是否可以解决涉及框架或更改 window.location
以加载内容的问题,但我看不出有什么方法可以让它发挥作用。
是否完全有可能做我正在寻找的事情,或者您能建议任何可能有用的优雅解决方法吗?
编辑:
更多背景知识 - 这是关于 an API browser 的一些工作.我可以用 GET
和 POST
做我需要的事情 - 它是 PUT
和 DELETE
很尴尬,因为我不能直接用 HTML 支持它们。目前,该实现使用了一些服务器端技巧和表单上隐藏的 _method
字段,允许将 POST
请求重载到 PUT
/DELETE
/OPTIONS
/whatever,但理想情况下,我想将该逻辑从服务器端取出,并使用 javascript 执行等效操作。
现在我不认为它真的可行,但我希望有人能证明我是错的,或者找到一个优雅的解决方法。
最佳答案
不知道你能不能open a new window或创建 an iframe您传递给窗口或 iframe 的 URL 不是网络资源的绝对 URL,而是 a data uri .您需要嗅出响应的 MIME 类型,然后对响应主体进行编码。
不知道它是否有效,但我很想知道您是否设法实现了它。
其他要探索的东西:the BlobBuilder (HTML5 功能)并使用自定义 MIME 类型创建“无源”iframe(其中 src
只是 about:blank
),然后使用 document.write
写入 iframe 文档(AppleOfMyIframe 中的一些代码可能有用)。
关于javascript - 使用 Javascript 加载非 HTML 内容。是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8488426/