对AJAX的get和post请求方式进行函数封装

        在使用ajax发送请求时,有get和post两种请求方式,两种请求方式的写法均比较固定, 为了使用方便,进行对get和post两种请求方式进行函数封装,这样,下次需要使用时,可直接引入js文件使用封装好的函数。

        首先对get请求方式进行封装

function ajax_get(url,data){
            //url是请求的文件路径,data是需要上传的数据,如 "name=jack"
      
         //创建异步对象
	var ajax = new XMLHttpRequest();
	
       //判断是否有上传的数据
         if(data){
		url + = '?';
		url + = data;
	}
	else{}
       //设置method为get
	ajax.open('get',url);
       //发送
	ajax.send();
       //注册事件
	ajax.onreadystatechange = function(){
		if(ajax.readyState == 4 && ajax.status == 200){
			console.log(ajax.responseText);
		}
	}
}

然后对post请求方式进行封装

post方式和get方式几乎相同,不同点是post上传的数据放在send()中,而get的则和url合拼之后放在open()中,并且post方式需要在ajax.send()和ajax.open()之间多添加ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 

function ajax_post(url,data){
	//url是请求文件路径,data是上传的数据
	
	//创建异步对象
	var ajax = new XMLHttpRequest();

	//设置method
	ajax.open('post',rul);

	//添加header
	ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	
	//判断是否有上传数据
	if(data){

		//有上传数据则放入send()中
		ajax.send(data);

	}else{

		ajax.send();
	}

	//注册事件
	ajax.onreadystatechange = function(){
		if(ajax.readyState == 4 && ajax.status == 200){
			
			//获取数据
			console.log(ajax.responseText);
		}
	}
}

get和post封装为同一个函数

最后,对get和post两种请求方式一起封装为同一个函数,并进行优化,以上两种封装方式,都规定了函数参数的顺序,现在把参数转换为一个对象,这样传入参数时就不需要考虑参数的顺序问题了。

/*option{
  url:"",
 data:"",
  method:"",
  success:function(data){}
  其中success是回调函数,为了使用函数返回的数据,在封装的函数中给success函数传入一个实参
}
*/

function ajax_tool(option){
	//传入一个对象参数
	
	//创建异步对象
	var ajax = new XMLHttpRequest();

	//判断请求方式是否为get
	if(option.method == 'get'){

		//方式为get,判断是否有上传的数据
		if(option.data){

			//有上传数据则拼接在url后面
			option.url += '?';
			option.url += option.data;
		}

		//设置method
		ajax.open(option.method,option.url);

		//发送
		ajax.send();
	}
	else{
		//post 请求方式部分
		
		//设置method
		ajax.open(option.method,option.url);

		//添加header
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		
		//判断是否有上传数据,设置send()
		if(option.data){
			ajax.send(option.data);

		}else{

			ajax.send();
		}
		
	}

	//get和post 注册事件
	ajax.onreadystatechange = function(){
		if(ajax.readyState == 4 && ajax.status == 200){

				//拿到数据后,通过传参数给回调函数success返回数据
				option.success(ajax.responseText);
		}
	}

}

到此,对ajax的get和post请求方式的封装就完成了,如有错误欢迎大家指出,也请大家多多见谅,谢谢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ajax中的POST请求是一种向服务器发送数据的方式。与GET请求不同,POST请求将数据作为请求体的一部分发送给服务器,而不是通过URL参数传递。POST请求通常用于向服务器提交表单数据或其他需要传递大量数据的场景。 在底层实现上,使用JavaScript的XMLHttpRequest对象来创建一个Ajax请求。首先,通过open()方法指定请求的方式(POST)和URL地址。然后,设置Content-Type属性为'application/x-www-form-urlencoded',表示请求体中的数据是以查询字符串的形式进行编码。接下来,调用send()方法将数据作为请求体发送给服务器。最后,监听onreadystatechange事件,当请求状态为4且返回状态为200时,即请求成功,可以通过responseText属性获取服务器返回的数据。 在jQuery中,封装了更简便的方式来发送POST请求。可以使用$.ajax()方法,通过设置type属性为'POST',url属性为请求的URL地址,data属性为要发送的数据,dataType属性为预期的服务器响应的数据类型。同时,可以使用success回调函数来处理请求成功后的操作。 需要注意的是,POST请求通常不会被浏览器缓存,因为浏览器认为POST请求提交的内容很可能会有变化,所以每次都会向服务器发送请求,不使用缓存。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Ajax-POST请求](https://blog.csdn.net/qq_43551801/article/details/120049212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [ajax请求 POSTajax简介,ajax提交数据的多种类型](https://blog.csdn.net/wangwei490202517/article/details/128763803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值