ajax与fetch

ajax与fetch都是前端开发过程中常用到的数据请求方式。fetch是一种http数据请求的方式,是XMLHttpRequest的一种替代方案;ajax使用 JavaScript 向服务器提出请求并处理响应而不阻塞用户核心对象XMLHttpRequest。

ajax

  • 创建XMLHttpRequest对象
  • 创建HTTP请求(调用open方法设置基本请求信息)
  • 发送请求
  • 注册事件
  • 获取返回数据,对页面进行更新
//1.创建Ajax对象
    if(window.XMLHttpRequest){
       var oAjax=new XMLHttpRequest();
    }else{
       var oAjax=new ActiveXObject("Microsoft.XMLHTTP");
    }

    //2.创建HTTP请求
    oAjax.open('GET', url, true);

    //3.发送请求
    oAjax.send();

    //4.注册事件
    oAjax.onreadystatechange=function (){
       if(oAjax.readyState==4){
           if(oAjax.status==200){
              //5.获取返回数据
              fnSucc(oAjax.responseText);
           }else{
              //alert('失败了');
              if(fnFaild){
                  fnFaild();
              }
           }
        }
    };

fetch

    Fetch API 提供了一个 JavaScript 接口,用于访问和操纵 HTTP 管道的部分,例如请求和响应。它还提供了一个全局 fetch()方法,该方法提供了一种简单,合理的方式来跨网络异步获取资源

  • 第一个参数是URL
  • 第二个是可选参数,可以控制不同配置的 init 对象
  • 使用了 JavaScript Promises 来处理结果/回调

基本语法:

fetch(url).then(response => response.json())
  .then(data => console.log(data))
  .catch(e => console.log("Oops, error", e))

封装:

window.Fetch = (url,option)=>{
	return new Promise((resolve, reject) => {
		let data = {
			method: "POST",
			headers:{
				'Accept': 'application/json, text/plain, */*',
				'Content-Type': 'application/json; charset=utf-8',
			},
			body: {},
		};
		data = JSON.parse((JSON.stringify(data)+JSON.stringify(option)).replace(/}{/,','));
		fetch(url,data).then(res=>{
			// .text():返回字符串
			// .json():返回一个JSON对象
			// .formData():返回一个FormData对象
			// .blob():返回一个blob对象
			// .arrayBuffer():返回一个二进制数组
			resolve(res.json())
		}).catch(function (res) {
		   reject(res)
		})
	});
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值