原生JS实现Ajax方法

什么是Ajax

        Ajax是通过资源路径寻址结合回调函数得到服务端的数据但不会从新加载页面,从而前台根据回调的结果进行相关的逻辑业务,全称是 Asynchronous JavaScript and XML异(步的 JavaScript 和 XML)
        在发送请求进行响应等待期间不能和服务器发生其他的交互操作,原因:浏览器由于内置了XmlHttpRequest对象,帮我们向服务器发送请求,服务器会返回一个xml或文本等其他类型的数据给浏览器,从而做一些页面效果的渲染与展现或进入其他页面等操作,从而达到一个页面没有刷新,但是执行了相关效果,我们称为异步刷新

Ajax异步刷新的好处

        好处:
                1、给用户的交互效果展现比较好
                2、不需要下载其他控件,它是浏览器内置的
                3、不重新加载整个页面的情况下,可以与服务器交换数据并重新渲染页面

获取内置对象XmlHttpRequest对象

//获取浏览器的内置对象 XMLHttpRequest
 function getXHR() {
     var xhr = null;
     //判定:如果当前浏览器里面有这么一个内置对象,说明他不是IE低版本浏览器
     if ((typeof XMLHttpRequest) != 'undefined'){
     	//构建内置对象
        xhr = new XMLHttpRequest();
     }else {
     	//构建IE低版本的内置对象
         xhr = new ActiveXObject("Microsoft.XMLHttp");
     }
     return xhr;
 }

原生JS实现Ajax

get请求方式写法

	// 此写法为get请求方式,非post请求方法
	//封装原生JS实现Ajax异步刷新
	function jsPostVersion(){
		//1、获取内置对象
		var xhr = getXHR();
		// 2、设置请求方式:请求类型、请求名称,是否异步
		xhr.open('GET','login?username=张三&password=123456',true);
		// 3、回调函数
		xhr.onreadystatechange = function (msg) {
			//两个条件:1、请求完成,响应就绪(4)   2、请求处理成功(200)
	        if (xhr.readyState == 4 && xhr.status == 200){
	            //msg 表示回调的内容,该方法中可以写接受回调数据后的业务操作
	        } 
    };
    	// 4、将请求发送给服务器
    	xhr.send(null);
	}

post请求方式写法

	// 此写法为post请求方法
	//封装原生JS实现Ajax异步刷新
	function jsPostVersion(){
		//1、获取内置对象
		var xhr = getXHR();
		// 2、设置请求方式:请求类型、请求名称,是否异步
		xhr.open('POST','login',true);
		//3、设置请求内容
		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		// 4、、回调函数
		xhr.onreadystatechange = function (msg) {
			//两个条件:1、请求完成,响应就绪(4)   2、请求处理成功(200)
	        if (xhr.readyState == 4 && xhr.status == 200){
	            //msg 表示回调的内容,该方法中可以写接受回调数据后的业务操作
	        } 
    };
    	// 5、将请求发送给服务器
    	xhr.send("userName=张三&password=123456");
	}

两种方式的不同点

  1. 两种方式请求的URL中携带数据的方式不同,get方式是直接在URL地址后面通过 ? 与类似键值对的方式进行数据携带即可,而post方式则需要在通过内置对象的sned()方法中传入数据参数
  2. post方式相对于get方式在数据携带上安全性更高,因此我们Post请求方式方式需要设置一下内置对象的请求对象消息头类型,从而服务器才能接收到我们传递的数据

相关参数说明

参数名称含义说明
open(method,url,asynch)方法method:请求类型、URL、是否异步 ①method:秦桧的类型,GET或POST等请求方式;②url请求服务器的资源访问地址 ③asynch是否为异步请求,true表示为异步,false表示同步,默认为true
setRequestHeader()方法当请求的类型是POST请求方式时,需要设置消息头类型,便于后台接收数据
onreadystatechange()方法是用来存储函数,当我们的readyState属性值发生改变时,将会调用该函数
readyState 属性存储XmlHttpRequest的状态,属性值∈[0,4] :① 0 表示请求未初始化 ②1表示 与服务器建立连接 ③2表示请求接收成功 ④3 表示请求处理中 ⑤ 4表示请求完成,且响应就绪状态
status 属性该属性为HTTP请求状态码:①200表示请求响应成功 ② 404 表示资源路径不可达 ③500 表示逻辑代码错误
send(string)方法将请求发送给服务器,其中的string两种情况:①请求类型为GET方式时此处string为null即可 ②若为POST请求方式,该string为url携带的数据,填写格式:parm1=value1&parm2=value2&…

Ajax发送请求操作步骤

  1. 通过XmlHttpRequest对象设置请求:请求类型、请求目标的URL、是否异步
  2. 通过XmlHttpRequest对象的onreadystatechange设置回调函数并执行的相关逻辑业务
  3. 通过send()方法发送请求给服务器的目标URL

         感谢大家的阅读,热爱分享的仓鼠,请大家多多指教,么么哒~~~~~

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被风吹过的忧伤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值