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

Posted 原来_是你

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原生封装一个类似于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);
        }
    }
}

 

以上是关于原生封装一个类似于JQ的ajax方法的主要内容,如果未能解决你的问题,请参考以下文章

模仿JQuery封装ajax功能

原生ajax 方法封装

Ajax方法封装

原生Ajax 和Jq Ajax

原生Ajax XMLHttpRequest对象

面试时怎样回答:你对原生ajax的理解