最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 原生js封装http请求,get、post请求

    正文概述 掘金(Memories)   2020-12-14   535
    let origin = 'http://www.baidu.com' // 后端接口域名
    const address = {
        // info: origin + '/template/getinfo', // 后端接口
    }
    export default function httpApi(type, _url, params = {}) {
            let object = {
                method: type || 'GET',  // 请求类型
                url: address[_url],     // 请求链接
                data: params			// 参数
            }
            return httpRequest(object)
    }
    export function httpRequest(obj, successfun, errFun){
        return new Promise((resolve, reject) => {
            var xmlHttp = null;
            //创建 XMLHttpRequest 对象,老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
            if(window.XMLHttpRequest){
                //code for all new browsers()
                xmlHttp = new XMLHttpRequest;
            }else if(window.ActiveXObject){
                //code for IE5 and IE6
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            //判断是否支持请求
            if(xmlHttp == null){
                alert("浏览器不支持xmlHttp");
                return;
            }
            //请求方式, 转换为大写
            var httpMethod = (obj.method || "Get").toUpperCase();
            //数据类型
            var httpDataType = obj.dataType || 'json';
            //url
            var httpUrl = obj.url;
            //异步请求
            var async = true;
            //post请求时参数处理
            if(httpMethod == "POST"){
                //请求体中的参数 post请求参数格式为:param1=test&param2=test2
                var data = obj.data || {};
                console.log(obj.data)
                var requestData = '';
                for(var key in data){
                    requestData = requestData + key + "=" + data[key] + "&";
                }
                if(requestData == ''){
                    requestData = '';
                }else{
                    requestData = requestData.substring(0, requestData.length - 1);
                }
            }
            //请求接口
            if(httpMethod == 'GET'){
                xmlHttp.open("GET", httpUrl, async);
                xmlHttp.send(null);
            }else if(httpMethod == "POST"){
                xmlHttp.open("POST", httpUrl, async);
                xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                xmlHttp.send(requestData);
            }
            
            //onreadystatechange 是一个事件句柄。它的值 (state_Change) 是一个函数的名称,当 XMLHttpRequest 对象的状态发生改变时,会触发此函数。状态从 0 (uninitialized) 到 4 (complete) 进行变化。仅在状态为 4 时,我们才执行代码
            xmlHttp.onreadystatechange = function(){
                //complete
                if(xmlHttp.readyState == 4){
                	// 此处用了promise替代了请求成功后的回调
                    if(xmlHttp.status == 200){
                        let res = JSON.parse(xmlHttp.responseText);
                        if (res && res.errno == 0) {
                            resolve(res);
                        } else {
                            reject(res);
                        }
                        //请求成功执行的回调函数
                        // successfun(JSON.parse(xmlHttp.responseText));
                    } else {
                    	//请求失败的回调函数
                      	errFun;
                    }
                }
            }
    
        })
     
    }
    

    起源地下载网 » 原生js封装http请求,get、post请求

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元