原生JS Ajax请求

传统请求方法的缺点

传统的web交互是用户触发一个http请求服务器,然后服务器收到之后,在做出响应到用户,并且返回一个新的页面,每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、只需从服务器端得到很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和带宽去重新读取整个页面。这个做法浪费了许多带宽,由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。

什么是ajax?

ajax的出现,刚好解决了传统方法的缺陷。ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。(即,异步请求,请求后端的数据)

XMLHttpRequest对象

XMLHttpRequest对象是ajax的基础,XMLHttpRequest用于在后台与服务器交换数据。这意味着可以用在不重新加载整个网页的情况下,对网页的某部分进行更新。目前所有浏览器都支持XMLHttpRequest

符号意义
abort()停止当前请求
getAllResponseHeaders()把HTTP请求的所有响应首部作为键/值对返回
getResponseHeader(“header”)返回指定首部的串值
open(“method”,“URL”,[asyncFlag],[“userName”],[“password”])建立对服务器的调用。method参数可以是GETPOST或PUT。url参数可以是相对URL或绝对URL。这个方法还包括3个可选的参数,是否异步,用户名,密码
send(content)向服务器发送请求
setRequestHeader(“header”, “value”)把指定首部设置为所提供的值。在设置任何首部之前必须先调用open()。设置header并和请求一起发送 ('post’方法一定要 )

原生ajax的写法

window.onload=function(){
	var b=document.getElementById("btn");
	b.onclick=function(){
		/* 1.创建 XMLHttpRequest 对象*/
		var http=new XMLHttpRequest(); //创建对象
		/* 2.打开服务器链接 */
		http.open("get","./data/data.txt"); //默认异步请求 true 模拟本地数据的请求
		/* 在 ajax async  同步(等待请求完成之后在去加载后续代码)或者异步(请求和代码同时执行)*/
		/*2.发送请求*/
		http.send();
		/*4.注册事件*/
		http.onreadystatechange=function(res){
		//   readyState  状态为4 读取完成
		//    status   为200   请求成功
			if(this.status==200&this.readyState==4)
			{
				/*5.更新界面*/
				console.log(this);
				/*读取成功之后的返回数据在response responseText*/
				document.write(this.response);
			}
			method("./data/data.txt",null,"post",showdata);
			function showdata(data){
				document.write(data);
			}
		}
	}
	//为了方便使用将get或者post请求方式封装为一个方法  直接调用
	function method(url,data,method,success){
	/*1.创建ajax对象*/
		var ajax=mew XMLHttpRequest();
	/*2.区分    根据method不同来区分请求方式*/
		if(method=="get")
		{
		//get
			if(data)
			{
			url+="?";
			url+=data;
			}
			else{
				
			}
			ajax.open(method,url);
			ajax.send();
		}
		else{
			//post
			ajax.open(method,url);
			if(data)
			{
				ajax.send(data);
			}
			else{
				ajax.send();
			}
		}
		ajax.onreadystatechange=function(){
			if(ajax.status==200&&ajax.readyState==4)
			{
				/*console.log(ajax.response);*/
				success(ajax.response);
			}
		}
	}
}

补充
1.post 请求:加密,安全,可以用于发送请求, 用send传值。
2.get 请求:没有加密,数据量大,可用于读取数据 传值:路径+?+属性=值。
3.加“?”时,默认为get传值。
4.async 值为false(同步)/ true(异步(同时加载))。
5.网页出现404:网页丢失。
6.网页出现500:服务器报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值