ajax、axios、fetch区别

news/2024/7/24 7:29:36 标签: ajax, axios, fetch

随着互联网的高速发展以及IT开发技术的升级,前后端分离已成为互联网项目开发的业界标准使用方式。

那么前后端如何通讯建立连接呢? 这时候就需要用到ajaxaxiosfetch

但是他们又有什么不同呢?我们一起来学习一下。

ajax_6">一、ajax学习

ajax__7">ajax 实现原理

ajax用过jQuery的同学,应该非常的熟悉了,核心使用XMLHttpRequest对象,对其进行封装,除此之外还添加了对JSONP的支持

var $={
	   ajax:function(opts){
		var xhr;
		var asyncs=(typeof opts.async==='undefined')?true:opts.async
		try{
			xhr=new XMLHttpRequest();
		}catch(e){
			try{
				xhr=new ActiveXobject("Msxml2.XMLHTTP")
			}catch(e){
				try{
					xhr=new ActiveXobject("Microsoft.XMLHTTP")
				}catch(e){
					alert('浏览器有毛病')
				}
			}
		}
		if(!opts.data){
			opts.data=null
		}
		if(opts.type=='opst'){
			xhr.setRequestHeader('content-Type','application/x-www-form-urlencoded')
		}

		xhr.open(opts.type || 'get',opts.url,asyncs) ;

		xhr.send(opts.data);

		xhr.onreadystatechange=function(){		
			if(xhr.readyState==4&&xhr.status==200){
				var datas=null;
				if(opts.datatype=='json'){
					var zhi=xhr.responseText;
					datas=eval("("+zhi+")")
				}
				else if(opts.datatype=='xml'){
					datas=xhr.responseXML;
				}
				else{
					datas=xhr.responseText;
				}

				return opts.success(datas)
			}			
		}
	}
}
字段类型参数默认值
asyncBooleantrue/falsefalse
dataObject--
typeStringget/postget
successfunction--

ajax_66">使用ajax

$.ajax({
	type:'post',
	url:'data/data.json',
	async:true,
	datatype:'json',
	success:function(data){
		console.log(data)
	}
})

ajax_79">jQuery 的ajax

cnpm i --save jquery

打开node_modules找到jquery,里面有详细的XMLHttpRequest以及jsonp封装逻辑

在这里插入图片描述

.get 、.post、.jsonp

/node_modules/jquery/src/ajax.js 845行

jQuery.each( [ "get", "post" ], function( _i, method ) {
	jQuery[ method ] = function( url, data, callback, type ) {

		// Shift arguments if data argument was omitted
		if ( isFunction( data ) ) {
			type = type || callback;
			callback = data;
			data = undefined;
		}

		// The url can be an options object (which then must have .url)
		return jQuery.ajax( jQuery.extend( {
			url: url,
			type: method,
			dataType: type,
			data: data,
			success: callback
		}, jQuery.isPlainObject( url ) && url ) );
	};
} );

axios_113">二、axios学习


http://www.niftyadmin.cn/n/1558099.html

相关文章

控制input只能输入数字和两位小数

<input type"text" name"je" οnkeyup"clearNoNum(this)" /> function clearNoNum(obj){ obj.value obj.value.replace(/[^\d.]/g,""); //清除"数字"和"."以外的字符 obj.value obj.value.replace(/^\./g…

mac 更新node,不要在去删除下载了,使用nvm 切换不同node版本

首先安装Homebrew 是一款Mac OS平台下的软件包管理工具&#xff0c;拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令&#xff0c;就可以实现包管理&#xff0c;而不用你关心各种依赖和文件路径的情况&#xff0c;十分方便快捷。 Homebrew的安装比较费劲&a…

修改Mac终端Terminal的提示文字,修改zshrc、bashrc

打开终端&#xff0c;我们会发现 左下角有一段丑丑的提示&#xff0c;大体意思是什么呢&#xff1f; 查看终端提示文字的环境变量 echo $PS1大家可以看到终端显示 \h:\W \u$ 那么如何可以修改一下呢&#xff1f; 毕竟主机名和用户名&#xff0c;其实我们并不太需要。 修改ba…

【Camera】相机防抖

2019独角兽企业重金招聘Python工程师标准>>> 【防抖】 EIS防抖&#xff08;电子防抖&#xff09;和光学防抖 EIS&#xff08;Electronic Image Stabilization&#xff09;电子防抖主要指数码相机上采用强制提高CCD感光参数、同时加快快门并针对CCD上取得的图像进行分…

安装nginx,简单实用

编译安装nginx &#xff0c;可以戳这里~&#xff0c;但是对于新手&#xff0c;不了解原理的话&#xff0c;执行下面的步骤~ 进入nginx 首先进入nginx的官网 点击documentation 点击 installing nginx 点击packages 点击installation instructions //第一步 sudo yum install…

Windows下安装、运行Lua

Windows下安装、运行Lua!本文提供全流程&#xff0c;中文翻译。Chinar坚持将简单的生活方式&#xff0c;带给世人&#xff01;&#xff08;拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例&#xff09;1↓进入Lua官网&#xff1a;http://www.lua.org——下载L…

升级node后,gulp突然不好使了。ReferenceError: primordials is not defined

前段时间&#xff0c;将node升级了一下&#xff0c;结果发现gulp 执行不了了&#xff0c;一直报错ReferenceError: primordials is not defined 原因 这里主要是因为node 和 gulp 的版本&#xff0c;相差太大导致的 //查看一下版本 node -v gulp -v如果版本 node >12 &am…