原生封装一个类似于JQ的ajax方法

function $ajax(json){
    //初始化参数
    if(!json){
        return;
    }
    json.type = json.type || 'GET';
    json.url = json.url || "";
    json.async = json.async || true;
    json.data = json.data || {};
    json.succeed = json.succeed || function(){}
    
    if(json.dataType=="jsonp"){
        
        var oScript=document.createElement("script")
        oScript.src=json.url
        document.body.appendChild(oScript);
        oScript.remove()
        return
    }
    //将json.data对象转为符合传递参数的格式
    var arr = [];
    for(var key in json.data){
        arr.push(key + '=' + json.data[key]);
    }
    var str = arr.join('&');
    alert(str);
    var xhr = new XMLHttpRequest();
    if(json.type.toUpperCase() === 'GET'){
        xhr.open(json.type,json.url + "?" + str,json.async);
        xhr.send();
    }else if(json.type.toUpperCase() === 'POST'){
        xhr.open(json.type,json.url,json.async);
        xhr.setRequestHeader("content-type","application/x-www-form-urlencoded;charset=utf-8");
        xhr.send(str);
    }
    xhr.onreadystatechange = function(){
        if(xhr.readyState === 4 && xhr.status === 200){
            json.succeed(xhr.responseText);
        }
    }
}
原文地址:https://www.cnblogs.com/zzkxjh/p/10087558.html