ajax是什么?

   ajax是一种用来改善用户体验的技术,其本质是利用浏览器提供的一个特殊的对象(XMLHttpRequest,也可称之为ajax对象)向服务器发送异步请求。服务器利用这些数据对当前页面做部分更新。整个过程,页面无刷新,不打断用户的操作。

 

XMLHttpRequest 只是实现 Ajax 的一种方式。

XMLHttpRequest 是一个设计粗糙的 API,不符合关注分离(Separation of Concerns)的原则,配置和调用方式非常混乱,而且基于事件的异步模型写起来也没有现代的 Promise,generator/yield,async/await 友好。

Fetch是基于promise设计的。

一定记住fetch不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象。

fetch原生支持率并不高,幸运的是,引入 polyfill 后可以完美支持

Fetch polyfill 的基本原理是探测是否存在 window.fetch 方法,如果没有则用 XHR 实现

Fetch 还利用到了请求的异步特性——它是基于 Promise 的。

fetch() 方法必须接受一个参数——资源的路径。无论请求成功与否,它都返回一个 Promise 对象,resolve 对应请求的 Response。

Axios

Axios 是一个基于 Promise 网络请求库,作用于 Node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和 Node.js中)。在服务端它使用原生 Node.js http 模块,而在客户端则使用 XMLHttpRequest。

这里我们只关注客户端的 Axios,它是基于 XHR 进行二次封装形成的工具库

客户端 Axios 的主要特性有:

  • 从浏览器创建 XMLHttpRequests
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求和响应数据
  • 取消请求
  • 自动转换JSON数据
  • 客户端支持防御XSRF

针对上图,我解释一下:

  • Ajax 是一种代表异步 JavaScript + XML 的模型(技术合集),所以 Fetch 也是 Ajax 的一个子集
  • 在之前,我们常说的 Ajax 默认是指以 XHR 为核心的技术合集,而在有了 Fetch 之后,Ajax 不再单单指 XHR 了,我们将以 XHR 为核心的 Ajax 技术称作传统 Ajax
  • Axios 属于传统 Ajax(XHR)的子集,因为它是基于 XHR 进行的封装。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ajax(Asynchronous JavaScript and XML)是一种在Web应用程序中创建交互式用户体验的技术。其原理是通过JavaScript在不重新加载整个页面的情况下,向服务器请求数据并更新页面的部分内容。 具体实现步骤如下: 1. 创建 XMLHttpRequest 对象 在 JavaScript 中,使用 XMLHttpRequest 对象来实现 Ajax。创建 XMLHttpRequest 对象的代码如下: ``` var xhr = new XMLHttpRequest(); ``` 2. 发送请求 使用 XMLHttpRequest 对象的 open() 和 send() 方法来发送请求。代码如下: ``` xhr.open('GET', 'url', true); xhr.send(); ``` 其中,第一个参数是请求类型(GET 或 POST),第二个参数是请求地址,第三个参数是指定请求是否异步执行。 3. 接收数据 当服务器响应请求时,会触发 XMLHttpRequest 对象的 onreadystatechange 事件。通过判断 readyState 属性和 status 属性的值,可以确定服务器响应的状态。如果响应成功,可以通过 responseText 或 responseXML 属性获取服务器返回的数据。代码如下: ``` xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { var data = xhr.responseText; // 处理返回的数据 } } ``` 4. 处理数据 根据服务器返回的数据格式,使用 JavaScript 对返回的数据进行处理,并将结果更新到页面上。 以上就是 Ajax 的基本原理和实现步骤。需要注意的是,Ajax 可能会存在跨域问题,需要在服务器端进行相应的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值