es6 AJAX封装

tech2022-10-04  71

class Ajax { constructor(xhr) { xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); this.xhr = xhr; } send(options) { let xhr = this.xhr; let ajax = { type: options.type || 'GET', url: options.url || '', async: options.async || 'true', dataType: options.dataType || 'json', data: options.data || '' }; return new Promise((resolve, reject) => { let dataList = []; for (let key in ajax.data) { dataList.push(key + '=' + ajax.data[key]) } let dataStr = dataList.join("&"); if (ajax.type === "get" || ajax.type === "GET") { console.log(dataStr); ajax.url = dataStr ? ajax.url + "?" + dataStr : ajax.url; console.log(ajax.url); xhr.open(ajax.type, ajax.url, ajax.async); xhr.send(); } if (ajax.type === "post" || ajax.type === "POST") { xhr.open(ajax.type, ajax.url, ajax.async); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); if (ajax.data) { xhr.send(ajax.data); } else { xhr.send(); } } xhr.onreadystatechange = () => { if (xhr.readyState === 4) { if (xhr.status >= 200 && xhr.status < 400) { const data = JSON.parse(xhr.response); resolve(data); console.log(data); } else if (xhr.status >= 400) { const data = JSON.parse(xhr.response); console.log(data); reject(new Error(xhr.status || 'Server if sail')); } } } }) } }

 

最新回复(0)