电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

ajax和fetch的區(qū)別點(diǎn)總結(jié)

瀏覽:57日期:2022-06-12 10:25:04

本教程操作環(huán)境:windows7系統(tǒng)、jquery1.10.2版本、Dell G3電腦。

ajax和fetch的區(qū)別

(1)、ajax是利用XMLHttpRequest對(duì)象來(lái)請(qǐng)求數(shù)據(jù)的,而fetch是window的一個(gè)方法

(2)、ajax基于原生的XHR開(kāi)發(fā),XHR本身的架構(gòu)不清晰,已經(jīng)有了fetch的替代方案

(3)、fetch比較與ajax有著更好更方便的寫(xiě)法

(4)、fetch只對(duì)網(wǎng)絡(luò)請(qǐng)求報(bào)錯(cuò),對(duì)400,500都當(dāng)做成功的請(qǐng)求,需要封裝去處理

(5)、fetch沒(méi)有辦法原生監(jiān)測(cè)請(qǐng)求的進(jìn)度,而XHR可以

ajax用法

因?yàn)樗膶?xiě)法很雞肋,所以大多會(huì)封裝下,導(dǎo)致可能很多人不會(huì)自己寫(xiě)個(gè)ajax請(qǐng)求。都是用的JQuery或者Axios來(lái)請(qǐng)求數(shù)據(jù)的

var xhr= new XMLHttpRequest(); // 新建XMLHttpRequest對(duì)象
xhr.onload= function(){ //請(qǐng)求完成
console.log(this.responseText);
}
// 發(fā)送請(qǐng)求:
xhr.open("GET", "/user");
xhr.send();

這樣一個(gè)請(qǐng)求就發(fā)出去了。很麻煩,發(fā)個(gè)簡(jiǎn)單請(qǐng)求,還得寫(xiě)這么多行代碼。 實(shí)際開(kāi)發(fā)中當(dāng)然不會(huì)這么寫(xiě),否則代碼冗余,可讀性差,用promise封裝一下

var Ajax = {
get: function(url,fn){
// XMLHttpRequest對(duì)象用于在后臺(tái)與服務(wù)器交換數(shù)據(jù)
var xhr=new XMLHttpRequest();
xhr.open("GET",url,false);
xhr.onreadystatechange=function(){
// readyState == 4說(shuō)明請(qǐng)求已完成
if(xhr.readyState==4){
if(xhr.status==200 || xhr.status==304){
console.log(xhr.responseText);
fn.call(xhr.responseText);
}
}
}
xhr.send();
},

// data應(yīng)為"a=a1&b=b1"這種字符串格式,在jq里如果data為對(duì)象會(huì)自動(dòng)將對(duì)象轉(zhuǎn)成這種字符串格式
post: function(url,data,fn){
var xhr=new XMLHttpRequest();
xhr.open("POST",url,false);
// 添加http頭,發(fā)送信息至服務(wù)器時(shí)內(nèi)容編碼類型
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) 方法需要三個(gè)參數(shù):

method:發(fā)送請(qǐng)求所使用的方法(GET或POST);與POST相比,GET更簡(jiǎn)單也更快,并且在大部分情況下都能用;然而,在以下情況中,請(qǐng)使用POST請(qǐng)求:

①無(wú)法使用緩存文件(更新服務(wù)器上的文件或數(shù)據(jù)庫(kù))

②向服務(wù)器發(fā)送大量數(shù)據(jù)(POST 沒(méi)有數(shù)據(jù)量限制)

③發(fā)送包含未知字符的用戶輸入時(shí),POST 比 GET 更穩(wěn)定也更可靠

url:規(guī)定服務(wù)器端腳本的 URL(該文件可以是任何類型的文件,比如 .txt 和 .xml,或者服務(wù)器腳本文件,比如 .asp 和 .php (在傳回響應(yīng)之前,能夠在服務(wù)器上執(zhí)行任務(wù)));

async:規(guī)定應(yīng)當(dāng)對(duì)請(qǐng)求進(jìn)行異步(true)或同步(false)處理;true是在等待服務(wù)器響應(yīng)時(shí)執(zhí)行其他腳本,當(dāng)響應(yīng)就緒后對(duì)響應(yīng)進(jìn)行處理;false是等待服務(wù)器響應(yīng)再執(zhí)行。

2、send() 方法可將請(qǐng)求送往服務(wù)器。

3、onreadystatechange:存有處理服務(wù)器響應(yīng)的函數(shù),每當(dāng) readyState 改變時(shí),onreadystatechange 函數(shù)就會(huì)被執(zhí)行。

4、readyState:存有服務(wù)器響應(yīng)的狀態(tài)信息。

0: 請(qǐng)求未初始化(代理被創(chuàng)建,但尚未調(diào)用 open() 方法)

1: 服務(wù)器連接已建立(open方法已經(jīng)被調(diào)用)

2: 請(qǐng)求已接收(send方法已經(jīng)被調(diào)用,并且頭部和狀態(tài)已經(jīng)可獲得)

3: 請(qǐng)求處理中(下載中,responseText 屬性已經(jīng)包含部分?jǐn)?shù)據(jù))

4: 請(qǐng)求已完成,且響應(yīng)已就緒(下載操作已完成)

5.responseText:獲得字符串形式的響應(yīng)數(shù)據(jù)。

6.setRequestHeader():POST傳數(shù)據(jù)時(shí),用來(lái)添加 HTTP 頭,然后send(data),注意data格式;GET發(fā)送信息時(shí)直接加參數(shù)到url上就可以,比如url?a=a1&b=b1。

fetch用法

1、第一個(gè)參數(shù)是URL
2、第二個(gè)參數(shù)可選參數(shù) 可以控制不同的init對(duì)象
3、使用了js 中的promise對(duì)象

var arr1 = [{
name: "haha",
detail:"123"
}];

fetch("url", {
method: "post",
headers: {//設(shè)置請(qǐng)求的頭部信息
"Content-Type": "application/json"
//跨域時(shí)可能要加上
//"Accept":"allication/json"
}, //將arr1對(duì)象序列化成json字符串
body: JSON.stringify(arr1)//向服務(wù)端傳入json數(shù)據(jù)
}).then(function(resp) {
resp.json().then((data) => {

})
});

所有的IE瀏覽器都不會(huì)支持 fetch()方法,服務(wù)器端返回 狀態(tài)碼 400 500的時(shí)候 不會(huì)reject

到此這篇關(guān)于ajax和fetch的區(qū)別點(diǎn)總結(jié)的文章就介紹到這了,更多相關(guān)ajax和fetch有什么區(qū)別內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: Ajax
相關(guān)文章:
主站蜘蛛池模板: 山西3A认证|太原AAA信用认证|投标AAA信用证书-山西AAA企业信用评级网 | 低气压试验箱_高低温低气压试验箱_低气压实验箱 |林频试验设备品牌 | 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 电池挤压试验机-自行车喷淋-车辆碾压试验装置-深圳德迈盛测控设备有限公司 | YT保温材料_YT无机保温砂浆_外墙保温材料_南阳银通节能建材高新技术开发有限公司 | 空气能暖气片,暖气片厂家,山东暖气片,临沂暖气片-临沂永超暖通设备有限公司 | 空气能采暖,热泵烘干机,空气源热水机组|设备|厂家,东莞高温热泵_正旭新能源 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 橡胶接头_橡胶软接头_套管伸缩器_管道伸缩器厂家-巩义市远大供水材料有限公司 | 影合社-影视人的内容合作平台 | 水性漆|墙面漆|木器家具漆|水漆涂料_晨阳水漆官网 | POS机办理_个人pos机免费领取-银联pos机申请首页| 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 桨叶搅拌机_螺旋挤压/方盒旋切造粒机厂家-无锡市鸿诚输送机械有限公司 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 实战IT培训机构_IT培训班选大学生IT技术培训中心_中公优就业 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | GAST/BRIWATEC/CINCINNATI/KARL-KLEIN/ZIEHL-ABEGG风机|亚喜科技 | 微水泥_硅藻泥_艺术涂料_艺术漆_艺术漆加盟-青岛泥之韵环保壁材 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 英语词典_成语词典_日语词典_法语词典_在线词典网 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | atcc网站,sigma试剂价格,肿瘤细胞现货,人结肠癌细胞株购买-南京科佰生物 | 泰国试管婴儿_泰国第三代试管婴儿费用|成功率|医院—新生代海外医疗 | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 3D全息投影_地面互动投影_360度立体投影_水幕灯光秀 | 广东银虎 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 阻垢剂-反渗透缓蚀阻垢剂厂家-山东鲁东环保科技有限公司 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 气胀轴|气涨轴|安全夹头|安全卡盘|伺服纠偏系统厂家-天机传动 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 颚式破碎机,圆锥破碎机,制砂机-新乡市德诚机电制造有限公司 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | 中央空调维修、中央空调保养、螺杆压缩机维修-苏州东菱空调 |