ajax的封装

发布时间:2020-06-24 04:10:35 作者:wx5cd0d4ba94e89
来源:网络 阅读:99

$ = {
ajax:function(options){
var xhr = null, // XXMLHttpRequest对象
url = options.url, // url 地址
method = options.method || 'GET', // 传输方式,默认GET
async = typeof (options.async) === "undefined"?true:options.async,
data = options.data || null,
params = '', //传递的参数
callback = options.success,
error = options.error;
// 将data的对象字面量的形式转化为字符串形式
if(data){
for(var i in data){
params += i + '=' + data[i] + '&';
}
params = params.replace(/&$/,'');
}

        // 根据method 的值改变URL
        if(method === 'GET'){
            url += '?' + params; 
        }
    if(typeof XMLHttpRequest != "undefined"){
        xhr = new XMLHttpRequest();
    }else if(typeof ActiveXObject != "undefined"){
        var xhrArr = ['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0', 
        'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP.2.0',]
    var len = xhrArr.length;
    for(var i=0; i <=len; i++){
        try{
            xhr = new ActiveXObject(xhrArr[i])
            break
        }catch(e){
            //TODO handle the exception
        }           
    }       
    }else{
    throw new Error('No XHR object available.');
    }
    xhr.onreadystatechange = function(){
        if xhr.readyState === 4){
            if((xhr.status >=200 && xhr.status <300) || xhr.status===304){
                callback && callback(JSON.parse(xhr.responseText))
            }else{
                error && error();
            }
        }
    }
    // 创建发送请求
    xhr.open(method,url,async)
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.send(params);
}

}

推荐阅读:
  1. 重新封装通用ajax
  2. Vue如何封装ajax

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ajax j aja

上一篇:计算页面滚出的距离

下一篇:推荐一款微信域名屏蔽检测工具

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》