ajax的封装

1.前言

ajax的封装有很多种形式,基本封装的请求就两种POST和GET两种请求,我们可以封装成两个函数POST一个GET一个。当然我们也可以把所有的请求都方庄在一个函数中,下面给大家分别演示集中常见的封装。

2.POST请求和GET请求分别封装在一个文件中

我们创建一个新文件一般命名为Ajax.js下面直接代码

//设置服务器的信息,这里是设置自己的本机地址
//把地址一起封装传参的时候就可以少传一个
//这个是自己使用node创建服务器的时候设置的端口,前面文章有写node创建服务的过程
const baseURL='http://127.0.0.1:3000';
//因为传递过来的参数是一个对象形式的
function post(obj){
//先把传递过来的数据 对象形式的转化为字符串
//声明一个空数组用来存储转化好的数据
var arr=[];
for (var k in obj){
//传递数据中有一个属性名为data
arr.push(k+'='+obj.data[k])
}
//将数组转为字符串之间用&方便我们传参
var str=arr.join('&');
//现在开始ajax四步
//1.创建http协议
 var xhr = new XMLHttpRequest();
 //2.创建连接
 //第一个参数为传递参数请求的形式是get或者post
 //第一个参数是请求地址和请求前缀
 //第三个参数是可以不写默认是true 意思是 是否为异步操作
 xhr.open(obj.type,baseURL+obj.url,true)
 //3.发送请求
 //设置请求头信息 只有post需要
  xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8')
  //post的参数是写的这里面的get的是拼接的写在第二步,post写在请求体里面
 xhr.send(str)
 //4.监听事件获取数据
 xhr.onload=function(){
 //obj.success是传递过来的对象内的属性  后面JSON.parse()方法将JSON字符串转换为js对象。转化成对象我们就可以方便渲染在页面上
 obj.success(JSON.parse(xhr.responseText));
}
}

get封装

function get(obj) {
    //把传过来的数据对象转化为字符串
    var arr = [];
    for (var k in obj.data) {
        arr.push(k + '=' + obj.data[k])
    }
    //将数组转化为字符串之间用&
    var str = arr.join('&')
    //创建对象
    var xhr = new XMLHttpRequest();
    //打开服务器连接
     //第一个参数为传递参数请求的形式是get或者post
 //第一个参数是请求地址和请求前缀
 //第三个参数是可以不写默认是true 意思是 是否为异步操作
    xhr.open(obj.type, baseURL + obj.url + '?' + str, true);
    //发送请求
    xhr.send();
    //监听事件获取数据
    xhr.onload = function () {
     //obj.success是传递过来的对象内的属性  后面JSON.parse()方法将JSON字符串转换为js对象。转化成对象我们就可以方便渲染在页面上
        obj.success(JSON.parse(xhr.responseText));
    }
}

上面的两个函数分别封装了POST和GET请求,这两个都是写在一个文件ajax.js中

3.把所有的请求都封装在一个

因为POST和PUT请求传参都是一样的,delete和get请求传递参数的方式都一样所有我们可以一次性封装在一个函数内

//将所有的请求方法封装成一个
function ajax(obj) {
    var arr = [];
    for (var k in obj.data) {
        arr.push(k + '=' + obj.data[k])
    }
    var str = arr.join('&')
    //创建HTTP请求对象
    var xhr = new XMLHttpRequest();
    //判断请求方式是哪一种 
    //我们通过判断传递参数进行判断传递时请求方式,因为请求过程就第二步和第三步不一样
    var method = obj.type.toUpperCase();
    if (method === 'GET' || method === 'DELETE') {
        //打开服务器的连接请求接口
          //第一个参数为传递参数请求的形式是get或者post
       //第一个参数是请求地址和请求前缀 ?是get请求需要的一个格式
      //第三个参数是可以不写默认是true 意思是 是否为异步操作
        xhr.open(method, baseURL + obj.url + '?', true)
        //发送请求
        xhr.send()
    } else if (method === 'POST' || method === 'PUT') {
        //打开服务器的连接请求接口
        xhr.open(method, baseURL + obj.url, true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8')
        xhr.send(str);
    }
    xhr.onload = function () {
    //obj.success是传递过来的对象内的属性  后面JSON.parse()方法将JSON字符串转换为js对象。转化成对象我们就可以方便渲染在页面上
        obj.success(JSON.parse(xhr.responseText));
    }

4.调用方法

在需要使用请求的地方进行引入<script src='./ajax.js'></script>
如果你使用的分别封装的函数调用时需要根据请求进行分别请求

get({
		type: 'GET',
		url: '/v1/about/member',
		// data: {
		// 	aid: 1
		// },
		success: function (res) {//通过回调函数获取结果
			//res就是获取的结果
			console.log(res);
			var arr = res.data;
			console.log(arr);
			//如果数据很多就通过for循环获取渲染到页面中
			for (let i = 0; i < arr.length; i++) {
				cont.innerHTML += `<li><p>·  ${arr[i].mname}</p></li>`
			}
		}
	})

post一般是向服务器添加一些内容基本是获取用户输入的内容,通过一个按钮点击后发送

btn.onclick = function () {
        //获取当前的时间
		var times = Date.now()
		//用户输入的内容
		var a = cname.value;
		var b = phone.value;
		var c = email.value;
		var d = detail.value;
		var e = times;
		var f = isrecommend.value;

		post({
			type: 'POST',
			url: '/v1/cooperate/add',
			data: {
				cname: a,
				phone: b,
				email: c,
				detail: d,
				ctime: e,
				is_recommend: f
			},
			success: function (res) {
				console.log(res);
			}
		})
		cname.value = '';
		phone.value = '';
		email.value = '';
		detail.value = '';
	}

如果你用的封装在一起的ajax函数调用方法如下

ajax({
    type: '',//请求类别
    url: '',//请求前缀
    data: {
//需要传递的参数
    },
    success: function (res) {
//获取发送过来的数据
    }
})

5.总结

基本的封装都是这样的一般都是用把所有的请求封装在一的方法,但是分别封装可以让我峨嵋你了解封装的原理。如果内容有错误欢迎大家指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jQuery的ajax封装主要分为三个步骤。首先,需要引入jQuery库。然后,通过代码实例来讲解。最后,根据代码注释来理解封装过程。 具体来说,封装的步骤如下: 1. 第一步:引入jQuery库。用户需要在页面中引入jQuery的库文件,可以通过以下方式引入: ``` <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> ``` 这样就可以在页面中使用jQuery的功能了。 2. 第二步:使用jQuery的ajax方法进行封装。用户可以通过以下代码将ajax请求进行封装: ``` $('#id').click(function(){ $.ajax({ url: "http://localhost:3000/ind", type: "post/get", data: $('form').serialize(), dataType: 'json', success: function(result){ // 请求成功后的回调函数,result中存放的是服务器的响应数据 }, error: function(err){ console.log(err); } }); }); ``` 在这段代码中,通过给一个元素绑定点击事件,当该元素被点击时,发起ajax请求。可以根据实际需求,修改url、type、data等参数来满足不同的请求。 3. 第三步:高层封装。除了使用jQuery的ajax方法,还可以使用高层封装的post请求实现简洁的代码,代码如下: ``` $.post(url, [data], [callback], [type]); ``` 其中,url是请求的地址,data是待发送的参数,callback是请求成功后的回调函数,type是返回内容的格式。 综上所述,jQuery的ajax封装通过引入jQuery库、使用ajax方法进行封装以及高层封装来实现。这样可以简化代码,提高开发效率。同时,原生的Ajax也是一种封装方式,可以使用XMLHttpRequest对象来发送异步请求,通过open方法建立与服务器的连接,设置请求头信息,然后通过send方法向服务器发送请求,并通过onreadystatechange事件监听请求-响应状态的改变,并将响应信息写入页面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值