自定义ajax方法

function ajax(url) {
    const p = new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest();
        xhr.open('GET', url, true)
        xhr.onreadystatechange = () => {
            if (xhr.readyState === 4) {
                if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
                    resolve(
                        JSON.parse(xhr.response))
                } else {
                    reject(new Error('Response error'))
                }
            }
        }
        xhr.send(null)
    })
        return p
}

function ajax(url, data, method, isbody) {
    method = method || "GET";
    const p = new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest();
        xhr.open(method, url, true)
        if (isbody) {
            xhr.setRequestHeader('content-type', 'application/json');
        }

        xhr.onreadystatechange = () => {
            if (xhr.readyState === 4) {
                if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
                    resolve(
                        JSON.parse(xhr.response))
                } else {
                    reject(new Error('Response error'))
                }
            }
        };
        if (data && isbody) {
            xhr.send(JSON.stringify(data));
        } else {
            xhr.send(null);
        }

    });
    return p;
}
posted @   leechg  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示