-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
XMLHttpRequest 与 fetch #60
Comments
使用XHR基础使用流程: 构造实例 -> open -> 注册onreadystatechange回调 -> send -> 根据status处理请求返回结果 readyState是请求状态,为3时表示正在请求,为4时表示请求完成
发起请求open:初始化请求
根据open的第三个参数async设置请求类型,为true时表示异步,为false则表示同步调用,默认为异步。 send:发送请求
setRequestHeader:设置请求头
timeout:设置超时时长单位为ms,代表着一个请求在被自动终止前所消耗的毫秒数。 当数值为0时表示不做超时控制。 在IE中,超时属性可能只能在调用 open() 方法之后且在调用 send() 方法之前设置。 withCredentials:是否使用头部授权XMLHttpRequest.withCredentials 属性是一个Boolean类型,它指示了是否该使用类似cookies,authorization headers(头部授权)或者TLS客户端证书这一类资格证书来创建一个跨站点访问控制(cross-site Access-Control)请求。在同一个站点下使用withCredentials属性是无效的。 此外,这个指示也会被用做响应中cookies 被忽视的标示。默认值是false。 如果在发送来自其他域的XMLHttpRequest请求之前,未设置withCredentials 为true,那么就不能为它自己的域设置cookie值。而通过设置withCredentials 为true获得的第三方cookies,将会依旧享受同源策略,因此不能被通过document.cookie或者从头部相应请求的脚本等访问。 upload:上传进度XMLHttpRequest.upload 属性返回一个 XMLHttpRequestUpload对象,用来表示上传的进度。这个对象是不透明的,但是作为一个XMLHttpRequestEventTarget,可以通过对其绑定事件来追踪它的进度。
abort:终止请求如果该请求已被发出,XMLHttpRequest.abort() 方法将终止该请求。当一个请求被终止,它的 readyState 将被置为 XMLHttpRequest.UNSENT (0),并且请求的 status 置为 0。
获取响应内容readyStatus:请求状态XMLHttpRequest.readyState 属性返回一个 XMLHttpRequest 代理当前所处的状态。一个 XHR 代理总是处于下列状态中的一个:
status:请求相应中的状态码只读属性 XMLHttpRequest.status 返回了XMLHttpRequest 响应中的数字状态码。status 的值是一个无符号短整型。在请求完成前,status的值为0。值得注意的是,如果 XMLHttpRequest 出错,浏览器返回的 status 也为0。 status码是标准的HTTP status codes。举个例子,status 200 代表一个成功的请求。如果服务器响应中没有明确指定status码,XMLHttpRequest.status 将会默认为200。 getResponsHeader、getAllResponsHeader:获取相应头和获取请求头的方法类似 response:请求相应体事件处理onreadystatechange | readystatechange | readyState 属性发生变化 |
Fetch基础使用Fetch API 提供了一种全局fetch()方法,该方法位于 WorkerOrGlobalScope 这一个 mixin 中 方法用于发起获取资源的请求。它返回一个 promise,这个 promise 会在请求响应后被 resolve,并传回 Response 对象。 fetch方法可以接收两个参数input和options。 input 参数可以是字符串,包含要获取资源的 URL。也可以是一个 Request 对象。
数据转换fetch返回的数据需要自己做数据类型的转换。 有以下API可以用于数据类型的转换:
中止请求关于fetch不支持中止请求,我们可以使用AbortController,但是由于其兼容性不好,所以我们还可以使用“abortcontroller-polyfill”。
|
另外 window.fetch 函数只是 Fetch API 提供的众多接口中的一个,还有很多有用的对象: window.Headers |
fetch和XMLHttpRequest的区别
fetch和Axios的区别
|
AJAX
AJAX 是 异步的JavaScript和XML,是一种不用刷新页面就能快速将增量更新展现在页面上的技术方案,他的核心就是XMLHttpRequest
XMLHttpRequest
XHR 一个允许你在不刷新页面的情况下请求某个URL来获取数据的技术。何以使用它来与服务器交换数据,实现页面的局部更新。
The text was updated successfully, but these errors were encountered: