Ajax异步请求

为什么要使用Ajax

在没有使用ajax技术时,前端要和服务器做交互是一个一来一回的过程。在前端通过HTTP协议向服务器发送请求时,要等待服务器的回应才能做下一步的操作,这给与了用户很不好的体验感。

什么Ajax

ajax是前端异步请求后台数据的技术,能做到在前端不刷新网页的情况下,获取后台数据在前端做显示,能给与用户很好的体验感。

Ajax应用案例

1.百度搜索响应栏
在这里插入图片描述
2.部分网页登录页面的即时验证功能

Ajax工作原理

传统的前端请求

传统的请求是直接的一来一回的过程:
浏览器 ----服务器
在这里插入图片描述

ajax请求

现在所有的浏览器中都会内置ajax引擎在浏览器发送请求时,会先把请求交给ajax引擎,再由ajax引擎与服务器进行交互。服务器响应回来的数据也会通过ajax引擎再发送给浏览器。ajax发送请求和反馈数据给浏览器都是一个异步的过程。就像之前要想写信给某一个人,需要自己亲手去送。现在邮局出现了,我们只要把信件交给邮局处理就可以了。交给邮局以后,我们就可以做自己的活动了。这里的邮局就是ajax引擎。
在这里插入图片描述

实现步骤

  1. 创建XMLHttpRequest对象
    不同的浏览器内核有着不同的XMLHttpRequest对象
    对于XMLHttpRequest对象专门创建一个js函数来获取
function createRequest(){
			var request;
			var reqs = [
				//火狐或者Google
				function(){return new XMLHttpRequest();},
				//IE浏览器有下面这三种类型
				function(){return new ActiveXObject("Msmxl12.XMLHTTP");},
				function(){return new ActiveXObject("Msxml13.XMLHTTP");},
				function(){return new ActiveXObject("MicroSoft.XMLHTTP")}
			];
			for(var i = 0;i < reqs.length;i++){
				try{
					request = reqs[i]();//判断是那种浏览器
				}catch(e){
				
				}
			}
			return request;
		}
  1. 使用XMLHttpRequest对象创建请求

request.open(“get”,“ajaxDemo?pid=0”);
第一个参数为请求方式,第二参数为请求路径

  1. 监听response对象,编写回调函数处理服务器返回的数据
  2. 使用XMLHttpRequest对象发送请求

request.send(null);
send()函数用户传递参数,如果没有参数就写null也可以不写,注意如果是火狐浏览器必须写null,不然报错。

代码实现

function ajaxDemo() {
			var request;
			if(window.XMLHttpRequest){
				request = new XMLHttpRequest();
			}else if(window.ActiveXObject){
				request = new ActiveXObject();
			}
			//使用XMLHttpRequest对象创建请求
			request.open("get","ajaxDemo?pid=0");
			//回调函数,
			request.onreadystatechange = function() {
			//判断请求状态
				if(request.readyState == 4){
				//获得后台传来的文本数据
					var date = request.responseText;
					eval("var j "+date);
					var country = "<select name='country'>";
					for(var i = 0;i<j.length;i++){
						country += "<option value='"+j[i].c_id+"'>'"+j[i].c+"'</optio>"
					}
					country += "</select>";
					document.getElementById("msg").innerHTML = "<h1>"+date+"</h1>";
				}
			}
			//使用XMLHttpRequest对象发送请求,send()函数用户传递参数,如果没有参数就写null也可以不写,注意如果是火狐浏览器必须写null,不然报错。
			request.send(null);
		}

状态码

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值