为什么可以直接访问服务器上的映像,但需要将 AJAX 用于其他文件类型

Why can you access an image on server directly but need to use AJAX for other file types?

本文关键字:AJAX 用于 类型 文件 其他 映像 访问 服务器 为什么      更新时间:2023-09-26

为什么在 JavaScript 中,您只需指定其 url 即可直接访问服务器上的图像,例如:

myImg = new Image();
myImg.src = "xxx.jpg";

但是,为了读取例如二进制文件,您必须发出 AJAX 请求才能访问它?
到底有什么区别?网络编程对我来说仍然是一个谜......

某些类型的文件具有 HTML 元素或 JS 构造函数形式的本机处理程序,这些处理程序本质上知道如何处理这些类型的文件。

图像就是这样一个例子。通过将其指定为 HTML <img /> 标记的 src 属性或 JS Image实例的 src 属性,您可以隐式地将其馈送到知道如何处理图像源代码的机制。

例如,对于文本文件,情况并非如此。没有与文本文件的加载和解释相关联的 HTML 元素或 JS 构造函数。这并不是说你不能提出请求。以下内容虽然荒谬,但仍然会提出成功的请求:

<img src='some/text/file.txt' />

相反,要有意义地使用响应,您将需要 AJAX,因为 HTML/JavaScript 不可能希望在本地知道您打算对该响应做什么。

[编辑]

此外,正如 Djizeus 在下面的评论中明确指出的那样,加载到 <img /> 元素或Image构造函数中的图像不会让您访问它们的源代码 - 它们只是作为图像数据输出到页面。

HTML提供原生引用的任何资源(图像,脚本,样式表,视频,音频,任何可以出现在iframe中的东西等)都不需要使用Ajax。

Ajax 只是使 HTTP 响应中的原始数据可用于 JavaScript,因此当您想要使用 JS 处理数据而不是使用浏览器的本机处理(或缺乏本机处理)时,您可以使用它。

如果你想在

浏览器端动态地处理来自网站的数据,你需要Ajax。否则,您根本不需要它 - 但当然,某些类型的数据可能无法很好地"显示"在浏览器上 - 完全取决于它是什么数据。

JavaScript 也有一些内置函数,例如,处理图像 - 然后它将在 JS 引擎中执行"ajax"样式的请求,而不必手动执行。Ajax 是一种更通用的访问任意数据的方法(例如,包括在请求中将您自己的数据传递给服务器,以便您获得登录的 John Smith 数据)