为什么可以直接访问服务器上的映像,但需要将 AJAX 用于其他文件类型
Why can you access an image on server directly but need to use AJAX for other file types?
为什么在 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 数据)
- 在ajax成功后,cluetip不适用于首次点击活动元素
- AJAX,用于显示数据库数据
- 用于各个元素的Ajax加载程序
- 需要一个用于AJAX的Javascript库,其中包含多部分/表单数据
- Jquery Ajax POST不工作.适用于GET
- 用于PHP查询的Ajax菜单
- 接收406(不可接受)用于AJAX动作Rails4
- 事件不适用于通过Ajax推杆的元素
- Zendesk app.js示例用于发送外部电子邮件通知或AJAX请求
- 通过 AJAX 发送表单,HTML 节点选择用于数据发送
- jQuery SelectMenu不适用于来自AJAX调用的KNOCKOUT DATA-BINDING
- 用于确定 AJAX 调用的引导选项卡选择
- 这个关键字位于$.ajax()中,用于调用其他函数来设置url
- Ajax成功回调仅适用于Chrome
- 将对象用于ajax和php
- Ajax-用于在发送请求之前检查url是否存在的函数
- 无法将jquery AJAX用于工作节点js express
- Ajax用于将XML条目添加到XML文件中
- Ajax用于通知服务器上的变量更改
- 为什么可以直接访问服务器上的映像,但需要将 AJAX 用于其他文件类型