Ajax请求重复发送问题

设置一个标识位,表示是否正在发送请求let isSending = false
具体代码:

// 1.创建对象
        let xhr = null
        let isSending = false
        const btn = document.getElementsByTagName('button')[0]

        btn.onclick = function(){
            if(isSending) xhr.abort()//如果正在发送请求,则取消该请求,并生成一个新的XHR
            xhr = new XMLHttpRequest()
            isSending = true//此时为正在发送请求
            // 2.初始化,设置请求方法和url
            xhr.open('GET', 'http://localhost:8000')
            // 3.发送
            xhr.send()
            // 4.事件绑定,处理服务端返回的结果
            xhr.onreadystatechange = function(){
                // 判断返回结果,0,1,2,3,4
                if(xhr.readyState===4){//服务端返回了所有的结果
                    // 判断响应状态码
                    isSending = false//此时已收到相应,代表请求已经发送完
                }
            }

        }
posted @ 2021-05-20 19:20  pangqianjin  阅读(173)  评论(0编辑  收藏  举报