仿jq封装原生ajax

 /* 封装ajax函数
 2  * @param {string}opt.type http连接的方式,包括POST和GET两种方式
 3  * @param {string}opt.url 发送请求的url
 4  * @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的
 5  * @param {object}opt.data 发送的参数,格式为对象类型
 6  * @param {function}opt.success ajax发送并接收成功调用的回调函数
 7  */
    function ajax(opt) {
        opt = opt || {};
        opt.type = opt.type.toUpperCase() || 'GET';
        opt.url = opt.url || '';
        opt.async = opt.async || true;
        opt.data = opt.data || null;
        opt.success = opt.success || function () {
        };
        var xmlHttp = null;
        if (XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        }
    else
        {
            xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
        }
        var params = [];
        for (var key in opt.data) {
            params.push(key + '=' + opt.data[key]);
        }
        var postData = params.join('&');
        if (opt.type.toUpperCase() === 'POST') {
            xmlHttp.open(opt.type, opt.url, opt.async);
             // 如果使用formdata 上传文件 不设置请求头
            if(opt.contentType !== 'multipart/form-data'){
                xmlHttp.setRequestHeader('Content-Type', opt.contentType||'application/x-www-form-urlencoded;charset=utf-8');
            }
            xmlHttp.send(opt.data);
        }
    else
        if (opt.type.toUpperCase() === 'GET') {
            xmlHttp.open(opt.type, opt.url + '?' + postData, opt.async);
            xmlHttp.send(null);
        }
        xmlHttp.onreadystatechange = function () {
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                opt.success(xmlHttp.responseText);
            }else{
                if (obj.error){
                    obj.error(xmlHttp.responseText);
                }
            }
        };
    }

调用示例:

 ajax({
                url:'http://www.tclass.net',
                type:"post",
                async:true,
                contentType:'multipart/form-data',
                data:{},
                success:function (res) {
                    console.log(res)
                }
            })

猜你喜欢

转载自blog.csdn.net/wang1006008051/article/details/80949265