Ajax基础:获取服务端响应数据的状态码

响应数据的状态码:0,1,2,3,4

0:已创建了Ajax对象,但是没有对Ajax对象进行配置

1:已对Ajax对象进行配置,但是没有发送请求

2:已经发送请求,单没有接收到响应的数据

3:已接收到服务器端的响应数据,但是没有接收完毕

4:服务器端的响应数据接收完毕

可以根据状态码来判断当前请求进行到哪一步了,当状态码为4时,表示可以对响应数据进行操作


客户端  06ajax.html  代码:

<body>
    <script>
        // 创建ajax对象
        var aj = new XMLHttpRequest();
        // 配置ajax对象,如果是传递json类型的数据,请求类型必须得是post
        console.log(aj.readyState); //0

        aj.open('get', 'http://localhost:3000/readstate');
        console.log(aj.readyState); //1

        aj.onreadystatechange = function() {
            console.log(aj.readyState);// 2   3   4
            if (aj.readyState == 4) {
                console.log(aj.responseText);
            }
        }

        aj.send(); 
    </script>
</body>

服务器端  app.js  代码:

const express = require('express');
const path=require('path');
 
const app = express();
 
//指明静态文件目录位置,以便浏览器中对(客户端)静态文件的加载
app.use(express.static(path.join(__dirname, 'public')));
 
app.get('/readstate', (req, res) => {
    res.send('已经对请求做出响应了');
})
 
app.listen(3000);
console.log('3000已启动');

可以看出, 状态码每一次的改变都会触发Ajax对象的onreadystatechange事件

而且当状态码为4时才会输出相应数据

方法1)可以在每次改变后来判断是否为4继而得知是否已对服务器端的相应数据接收完毕

方法2)使用Ajax对象的onload事件(当服务器端数据接收完毕后被触发)

总结:

 onreadystatechange和onload都可以实现获取服务器端的响应,两者的区别:

1、onreadystatechange()会被调用多次,每次状态的改变都会被调用,效率低

      onload()只会被调用一次,无需判断状态码,代码简洁,效率搞

2、onreadystatechange()可以兼容低版本的浏览器

      onload()不兼容IE低版本浏览器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值