XMLHttpRequestEventTarget与XMLHttpRequest的addEventListener事件写法

第一种:

XMLHttpRequestEventTarget.onabort
包含当请求中止并且abort该对象接收到事件时要调用的函数。
XMLHttpRequestEventTarget.onerror
包含当请求遇到错误并且error此对象接收到事件时调用的函数。
XMLHttpRequestEventTarget.onload
包含在成功获取内容后HTTP请求返回并且load此对象接收到事件时调用的函数。
XMLHttpRequestEventTarget.onloadstart
包含在HTTP请求首次开始加载数据并且loadstart此对象接收到事件时调用的函数。
XMLHttpRequestEventTarget.onprogress
包含定期调用的函数,其中包含有关请求进度的信息progress,此对象接收事件。
XMLHttpRequestEventTarget.ontimeout
包含事件超时且timeout该对象接收到事件时调用的函数;仅当通过设置XMLHttpRequest对象timeout属性的值预先建立了超时时,才会发生这种情况。
XMLHttpRequestEventTarget.onloadend
包含在加载完成时调用的函数,即使请求失败,并且loadend此对象接收到该事件。

语法;

XMLHttpRequest.onabort = callback;

第二种:addEventListener

语法:

const xhrButtonSuccess = document.querySelector('.xhr.success');
const xhrButtonError = document.querySelector('.xhr.error');
const xhrButtonAbort = document.querySelector('.xhr.abort');
const log = document.querySelector('.event-log');

function handleEvent(e) {
    log.textContent = log.textContent + `${e.type}: ${e.loaded} bytes transferred\n`;
}

function addListeners(xhr) {
    xhr.addEventListener('loadstart', handleEvent);
    xhr.addEventListener('load', handleEvent);
    xhr.addEventListener('loadend', handleEvent);
    xhr.addEventListener('progress', handleEvent);
    xhr.addEventListener('error', handleEvent);
    xhr.addEventListener('abort', handleEvent);
}

function runXHR(url) {
    log.textContent = '';

    const xhr = new XMLHttpRequest();
    addListeners(xhr);
    xhr.open("GET", url);
    xhr.send();
    return xhr;  
}

xhrButtonSuccess.addEventListener('click', () => {
    runXHR('https://mdn.mozillademos.org/files/16553/DgsZYJNXcAIPwzy.jpg');
});

xhrButtonError.addEventListener('click', () => {
    runXHR('https://somewhere.org/i-dont-exist');
});

xhrButtonAbort.addEventListener('click', () => {
    runXHR('https://mdn.mozillademos.org/files/16553/DgsZYJNXcAIPwzy.jpg').abort();
});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值