JS--AJAX跟踪状态readyState、终止ajax请求abort()方法

本文深入解析了XMLHttpRequest对象的readyState属性及其跟踪异步交互状态的作用。详细介绍了readyState的五个状态值及其含义,并展示了如何结合status属性判断HTTP响应是否成功。同时,提供了中止请求的方法及注意事项。
跟踪状态

XMLHttpRequest对象通过readyState属性实时跟踪异步交互状态。一旦当该属性发生变化时,就触发readystatechange事件,调用该事件绑定的回调函数。

readyState属性值:

返回值说明
0未初始化。表示对象已经建立,但是尚未初始化,即尚未调用open()方法
1初始化。表示对象已经建立,即尚未调用send()方法
2发送数据。表示send()方法已经调用,但是当前的状态及HTTP头未知
3数据传送中。已经接收部分数据,因为响应及HTTP头不全,这时通过responseBody和responseText获取部分数据会出现错误
4完成。数据接收完毕,此时可以通过responseBody和responseTest获取完成响应数据

如果readyState属性值为4,则说明响应完毕,那么就可以安全读取返回的数据。另外,还需要检测HTTP状态码,只有当HTTP状态码为200时,才表示HTTP响应顺利完成。

在XMLHttpRequest对象中可以借助status获取当前HTTP状态码。如果readyState属性值为4,且status属性值为200,那么说明HTTP请求和响应过程顺利完成。

示例:

<h1>AJAX测试</h1>
 <button id="btn" value="btn" onclick="f()">按钮</button>
 <script>
     function f() {
         var ajax = createXMLHTTPObject();
         ajax.onreadystatechange = function(){
             if(ajax.readyState == 4){
                 if(ajax.status == 200){
                     alert(ajax.responseText);
                 }
             }
         }
         ajax.open("post", "response.jsp",false);
         ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
         ajax.send("name=Tom");
     }
 </script>

response.jsp:

<%
   String name = request.getParameter("name");
   response.getWriter().write(name);
%>

在这里插入图片描述

终止请求

使用abort()方法可以中止正在进行的异步请求。在使用abort()方法前,应先清除onreadystatechange事件处理函数,因为IE和Mozilla在请求中止后也会激活这个事件处理函数,如果给onreadystatechange属性设置为null,则在IE会发生异常,所以可以为它设置一个空函数:

xmlhttp.onreadystatechange = function(){};
xmlhttp.abort();
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值