ajax与fetch

Ajax的本质是使用XMLHttpRequest对象来请求数据
ajax的工作过程如下:
在这里插入图片描述

fetch 是全局量 window 的一个方法,它的主要特点有:

  1. 第一个参数是URL:
  2. 第二个是可选参数,可以控制不同配置的 init 对象
  3. 使用了 JavaScript Promises 来处理结果/回调:
// 链式处理,将异步变为类似单线程的写法:
高级用法. fetch('/some/url').then(function(response) { 
    return . //... 执行成功, 第1步...
}).then(function(returnedValue) { 
        // ... 执行成功, 第2步...
}).catch(function(err) {
// 中途任何地方出错...在此处理 :
}); 

fetch规范与jQuery.ajax()主要有两种方式的不同:

  1. 从 fetch()返回的 Promise 将不会拒绝HTTP错误状态, 即使响应是一个 HTTP 404 或 500。相反,它会正常解决 (其中ok状态设置为false), 并且仅在 网络故障时或任何阻止请求完成时,它才会拒绝。
  2. 默认情况下,fetch在服务端不会发送或接收任何 cookies, 如果站点依赖于维护一个用户会话,则导致未经认证的请求 ( 要发送 cookies,必须发送凭 据头). 如果想要在同域中自动发送cookie,加上 credentials 的 same-origin 选项 fetch(url, { credentials: ’same-origin’ }) same-origin值使得fetch处理Cookie与XMLHttpRequest类似。 否则,Cookie将不会被发送,导致这些请求不保留认证会话。
  3. 对于CORS请求,使用include值允许将凭据发送到其他域: fetch(url, { credentials: ‘include’ })

猜你喜欢

转载自blog.csdn.net/LiXSnow/article/details/84472948