千家信息网

ajax和fetch有哪些区别

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍了ajax和fetch有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。ajax和fetch的区别:1、ajax
千家信息网最后更新 2025年02月23日ajax和fetch有哪些区别

这篇文章主要介绍了ajax和fetch有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

ajax和fetch的区别:1、ajax基于原生的XHR开发架构不清晰,fetch采用了Promise的异步处理机制使用比ajax简单;2、ajax利用XMLHttpRequest对象来请求数据,fetch只是全局量window的一个方法。

本教程操作环境:windows10系统、jquery3.2.1版本、Dell G3电脑。

1. ajax和fetch的区别 :

(1)、ajax是理用XMLHttpRequest对象来请求数据的,而fetch是window的一个方法

(2)、ajax基于原生的XHR开发,XHR本身的架构不清晰,已经有了fetch的替代方案

(3)、fetch比较与ajax有着更好更方便的写法

(4)、fetch只对网络请求报错,对400,500都当做成功的请求,需要封装去处理

(5)、fetch没有办法原生监测请求的进度,而XHR可以

2.ajax用法

因为它原生的写法很鸡肋,所以大多会封装下,导致可能很多人不会自己写个ajax请求。都是用的JQuery或者Axios来请求数据的

var xhr= new XMLHttpRequest(); // 新建XMLHttpRequest对象xhr.onload= function(){ //请求完成  console.log(this.responseText);}// 发送请求:xhr.open('GET', '/user');xhr.send();

这样一个请求就发出去了。很麻烦,发个简单请求,还得写这么多行代码。 实际开发中当然不会这么写,否则代码冗余,可读性差,用promise封装一下

var Ajax = {    get: function(url,fn){        // XMLHttpRequest对象用于在后台与服务器交换数据        var xhr=new XMLHttpRequest();        xhr.open('GET',url,false);        xhr.onreadystatechange=function(){            // readyState == 4说明请求已完成            if(xhr.readyState==4){                if(xhr.status==200 || xhr.status==304){                    console.log(xhr.responseText);                    fn.call(xhr.responseText);                }            }        }        xhr.send();    },    // data应为'a=a1&b=b1'这种字符串格式,在jq里如果data为对象会自动将对象转成这种字符串格式    post: function(url,data,fn){        var xhr=new XMLHttpRequest();        xhr.open('POST',url,false);        // 添加http头,发送信息至服务器时内容编码类型        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');        xhr.onreadystatechange=function(){            if (xhr.readyState==4){                if (xhr.status==200 || xhr.status==304){                    // console.log(xhr.responseText);                    fn.call(xhr.responseText);                }            }        }        xhr.send(data);    }}

代码注释:

1.open(method, url, async) 方法需要三个参数:

method:发送请求所使用的方法(GET或POST);与POST相比,GET更简单也更快,并且在大部分情况下都能用;然而,在以下情况中,请使用POST请求:

①无法使用缓存文件(更新服务器上的文件或数据库)
②向服务器发送大量数据(POST 没有数据量限制)
③发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

url:规定服务器端脚本的 URL(该文件可以是任何类型的文件,比如 .txt 和 .xml,或者服务器脚本文件,比如 .asp 和 .php (在传回响应之前,能够在服务器上执行任务));

async:规定应当对请求进行异步(true)或同步(false)处理;true是在等待服务器响应时执行其他脚本,当响应就绪后对响应进行处理;false是等待服务器响应再执行。

2.send() 方法可将请求送往服务器。

3.onreadystatechange:存有处理服务器响应的函数,每当 readyState 改变时,onreadystatechange 函数就会被执行。

4.readyState:存有服务器响应的状态信息。

0: 请求未初始化(代理被创建,但尚未调用 open() 方法)
1: 服务器连接已建立(open方法已经被调用)
2: 请求已接收(send方法已经被调用,并且头部和状态已经可获得)
3: 请求处理中(下载中,responseText 属性已经包含部分数据)
4: 请求已完成,且响应已就绪(下载操作已完成)

5.responseText:获得字符串形式的响应数据。

6.setRequestHeader():POST传数据时,用来添加 HTTP 头,然后send(data),注意data格式;GET发送信息时直接加参数到url上就可以,比如url?a=a1&b=b1。

3.fetch用法

1、第一个参数是URL
2、第二个参数可选参数 可以控制不同的init对象
3、使用了js 中的promise对象

var arr1 = [{   name: "haha",   detail:"123"}];   fetch("url", {       method: "post",       headers: {//设置请求的头部信息           "Content-Type": "application/json"            //跨域时可能要加上           //"Accept":"allication/json"       },    //将arr1对象序列化成json字符串       body: JSON.stringify(arr1)//向服务端传入json数据   }).then(function(resp) {       resp.json().then((data) => {                          })   });

所有的IE浏览器都不会支持 fetch()方法,服务器端返回 状态码 400 500的时候 不会reject

感谢你能够认真阅读完这篇文章,希望小编分享的"ajax和fetch有哪些区别"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

服务 服务器 数据 对象 方法 处理 参数 字符 文件 信息 字符串 篇文章 代码 格式 状态 脚本 封装 开发 写法 函数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 接入医保数据库 手机网络安全概念 asp取服务器时间 怎么制作服务器中的无限刷矿石机 天津鑫隆网络技术服务中心 中国科技大学网络安全专家 计算机网络技术开学要带电脑么 如何设置数据库中的安全性 定时收缩数据库日志文件 特美居网络技术有限公司做什么的 战术小队刷不到朋友的服务器 驻村国家网络安全 数据库长连接Java 软件开发pc什么意思 移动呼死你防护服务器 android数据库多大 光环无限无法启动专业服务器 怎么通过校园网搭建服务器 数据库 批量 随机数 船级社对智能船的网络安全 倩女幽魂服务器不存在了 sqlite 清空数据库 网络安全法保障网络免受干扰 oracle数据库加密软件 网络安全应急管理指挥机制 上位机软件开发好找工作吗 定时收缩数据库日志文件 网络安全评分等级 船级社对智能船的网络安全 成都嵌入式软件开发工程师
0