Ajax基本使用

由于Ajax是基于node的环境下进行的,所以我们在使用前先有确保已经下载node
同时我们还需要进行下载express $ npm i express
在script标签下进行书写

const xhr = new XMLHttpRequest();
    //设置请求方法和URL
    xhr.open('GET', 'http://127.0.0.1:3000/server');
    //请求发送
    xhr.send();
    //事件绑定   处理服务端返回的结果
    //onreadystatechange 当状态改变的时候触发
    //状态主要包括:0,1(open方法已经完成),2(send方法完成),3(返回了部分的结果),4(所以结果全部返回)
    xhr.onreadystatechange = () => {
    //判断状态
    if (xhr.readyState === 4) {
        //判断返回状态  status方法的返回值为状态码   200,404,403,500 ....
        if (xhr.status === 200) {
            box.innerHTML = xhr.response;
            }
        }
    }

上面是get请求
post请求的发送也是和get请求类似不过参数的传递有所不同

**

添加参数:

**
get请求在URL的末端加?(问号)后添加参数
post请求在send内添加参数

并且在发送post请求是我们的服务端js上也有与之对应的post 才可以发送成功
所以我们在服务端可以写全部请求都可以进行响应:
app.all(’/…’,(req,res)=> {

}))

**

设置请求头信息:

**
xhr.setRequestHeader(’ ‘,’ ');将添加的请求头对应添加,同时我们也可以自定义头信息

**

工具:

**
服务器自动重新启动 nodemon
在我们对ji文件进行修改保存后就会重新启动服务器
下载:
& npm i -g nodemon

对服务端进行重新启动
&nodemon xxx.js

**

IE缓存问题:

**
在我们进行新的一次请求后在IE会把上一次的返回结果保存在缓存中,在我们发送新的请求时IE浏览器会显示缓存中的内容
**

解决:

**
在我们open中的URL字符串后添加一个时间戳,+Date.now()
原理:由于每一刻的时间戳都不同,在URl中相当于每次请求的地址也不同,IE浏览器会认为是一个新的地址对服务端进行发送请求

**

请求超时与网络异常:

**
**

超时设置:

**
xhr.timeout = 2000; //请求时间超过2秒自动取消请求
**

超时回调:

**
xhr.ontimeout = function() {

}
**

网络异常回调:

**
xhr.onerror = function() {

}

**

手动取消请求:

**
xhr.abort()

**

重复请求问题:

**
原理:
在事件回调函数外创建一个标识变量,初始值为false。在回调函数内在发送请求是将这个标识变量的值赋为true,在请求完成再次进行对标识变量进行赋值为false,在刚刚进入事件回调函数是进行判断标识变量的值,如果正在请求,就立即停止(xhr.abort()),这个就可以解决重复请求问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值