赞
踩
- export default async(url = '', data = {}, type = 'GET', method = 'fetch') => {
- type = type.toUpperCase();
- if (type == 'GET') {
- let dataStr = ''; //数据拼接字符串
- Object.keys(data).forEach(key => {
- dataStr += key + '=' + data[key] + '&';
- })
-
- if (dataStr !== '') {
- dataStr = dataStr.substr(0, dataStr.lastIndexOf('&'));
- url = url + '?' + dataStr;
- }
- }
-
- if (window.fetch && method == 'fetch') {
- let requestConfig = {
- credentials: 'include',//为了在当前域名内自动发送 cookie , 必须提供这个选项
- method: type,
- headers: {
- 'Accept': 'application/json',
- 'Content-Type': 'application/json'
- },
- mode: "cors",//请求的模式
- cache: "force-cache"
- }
-
- if (type == 'POST') {
- Object.defineProperty(requestConfig, 'body', {
- value: JSON.stringify(data)
- })
- }
-
- try {
- const response = await fetch(url, requestConfig);
- const responseJson = await response.json();
- return responseJson
- } catch (error) {
- throw new Error(error)
- }
- } else {
- return new Promise((resolve, reject) => {
- let requestObj;
- if (window.XMLHttpRequest) {
- requestObj = new XMLHttpRequest();
- } else {
- requestObj = new ActiveXObject;
- }
-
- let sendData = '';
- if (type == 'POST') {
- sendData = JSON.stringify(data);
- }
-
- requestObj.open(type, url, true);
- requestObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
- requestObj.send(sendData);
-
- requestObj.onreadystatechange = () => {
- if (requestObj.readyState == 4) {
- if (requestObj.status == 200) {
- let obj = requestObj.response
- if (typeof obj !== 'object') {
- obj = JSON.parse(obj);
- }
- resolve(obj)
- } else {
- reject(requestObj)
- }
- }
- }
- })
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。