Ajax的本质是使用XMLHttpRequest对象来请求数据
ajax的工作过程如下:
fetch 是全局量 window 的一个方法,它的主要特点有:
- 第一个参数是URL:
- 第二个是可选参数,可以控制不同配置的 init 对象
- 使用了 JavaScript Promises 来处理结果/回调:
// 链式处理,将异步变为类似单线程的写法:
高级用法. fetch('/some/url').then(function(response) {
return . //... 执行成功, 第1步...
}).then(function(returnedValue) {
// ... 执行成功, 第2步...
}).catch(function(err) {
// 中途任何地方出错...在此处理 :
});
fetch规范与jQuery.ajax()主要有两种方式的不同:
- 从 fetch()返回的 Promise 将不会拒绝HTTP错误状态, 即使响应是一个 HTTP 404 或 500。相反,它会正常解决 (其中ok状态设置为false), 并且仅在 网络故障时或任何阻止请求完成时,它才会拒绝。
- 默认情况下,fetch在服务端不会发送或接收任何 cookies, 如果站点依赖于维护一个用户会话,则导致未经认证的请求 ( 要发送 cookies,必须发送凭 据头). 如果想要在同域中自动发送cookie,加上 credentials 的 same-origin 选项 fetch(url, { credentials: ’same-origin’ }) same-origin值使得fetch处理Cookie与XMLHttpRequest类似。 否则,Cookie将不会被发送,导致这些请求不保留认证会话。
- 对于CORS请求,使用include值允许将凭据发送到其他域: fetch(url, { credentials: ‘include’ })