Ajax 简明教程
Fetch API Vs XMLHttpRequest
XMLHttpRequest 对象用于与服务器进行异步通信,这意味着可以在后台与服务器交换数据而无需刷新整个页面。XMLHttpRequest 是最常用的技术,这就是为什么它被大多数主流浏览器(如 Google Chrome、Safari、Mozilla Firefox 或 Opera)使用。它还支持纯文本、JSON 数据以及更多数据格式。它非常容易使用,并提供各种方法和属性来执行操作。我们可以使用 XMLHttpRequest() 构造函数创建一个 XMLHttpRequest 对象。
Syntax
variableName = new XMLHttpRequest()
其中,使用 XMLHttpRequest() 构造函数以及一个 new 关键字,我们能够创建一个新的 XMLHttpRequest 对象。必须在调用 send() 函数以向 Web 服务器发送请求之前创建此对象并调用 open() 函数对此对象进行初始化。
Fetch API 提供了一个用于从服务器获取/检索资源的界面。它是 XMLHttpRequest 的一种现代替代方案。它支持请求和响应的通用定义,因此我们可以在需要的情况下将来访问它们以用于缓存 API、服务工作、处理或修改请求和响应等。它非常容易、简单和一致。或者我们可以说它为创建 HTTP 请求和处理响应提供了一种与 XMLHttpRequest 相比更加现代和灵活的方法。它基于 Promise API,该 API 提供了清晰的语法和更好的错误处理。
Syntax
fetch(res)
其中,fetch() 取一个强制参数,即 res。res 参数定义你要获取的资源,它可以是字符串或任何其他对象,也可以是请求对象。除了强制参数,它还可以取一个可选参数,该参数可以是方法、标头、正文、模式缓存、同源等。
Fetch API VS XMLHttpRequest
以下是 Fetch API 和 XMLHttpRequest 之间的区别:
Difference |
Fetch API |
XMLHttpRequest |
Syntax |
众所周知,Fetch API 是一个基于承诺的 API,因此它提供了更清晰的语法和更好的错误处理方法。 |
XHR 基于回调方法,其语法不如 Fetch API 那么好。 |
Cross-Origin Resource Sharing(CROS) |
Fetch API 明智地处理 CROS 请求,无需任何其他配置。 |
XMLHttpRequest 需要特殊配置来处理或发出跨源请求。 |
Request and Response Header |
Fetch API 提供了更灵活的方法来处理请求和响应标头。 |
XMLHttpRequest 提供了有限数量的方法来处理请求和响应标头。 |
Streaming and Parsing |
Fetch API 为流式传输和解析大型响应提供了良好的支持,因此它提高了性能并减少了内存使用。 |
XMLHttpRequest 需要一个自定义程序来获取此功能。 |
Browser Compatibilities |
Fetch API 是新的,因此旧版本的浏览器可能不支持它。 |
XMLHttpRequest 已使用多年,因此几乎所有浏览器都支持它。 |
Cookies and Credential Control |
Fetch API 对 cookie 和凭据提供了良好的控制,因此与 XMLHttpRequest 相比,我们可以轻松地进行身份验证和授权。 |
XMLHttpRequest 对 cookie 和凭据的支持较少。 |
Timeouts |
Fetch API 不支持超时,因此该请求将继续进行,直到浏览器选择该请求。 |
XMLHttpRequest supports timeouts. |