和jQuery的$.ajax()的效果是一样一样哒!

//原生AJAX
var fxAJAX = function (el) {
    //el :初始化 参数
    //get请求方式会产生缓存,post请求方式则没有。。。
    var el = {
        url: el.url,//必填
        type: el.type == undefined ? "get" : el.type,//string 可选,默认为"get"
        data: el.data == undefined ? null : el.data,//可选,默认为空,只有type==post请求的的时候需要, user=user&name=name....
        dataType: el.dataType == undefined ? "text" : el.dataType,//string 可选,默认为“text”
        success: el.success//可选,回调函数
    };
    //创建XMLHttpRequest对象
    var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    //传参数,打开对象
    xmlHttp.open(el.type, el.url, true);
    //选择发送方式
    //因为get请求的参数是在url里,所以send(null);
    el.type.toString().toLocaleLowerCase() == "get" ? xmlHttp.send(null) : xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttp.send(el.data);
    //if (el.type.toString().toLocaleLowerCase() == "get") { xmlHttp.send(null) } else { xmlHttp.send(el.data) }
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            if (el.dataType.toString().toUpperCase() == "TEXT") {
                //普通文本
                if (el.success != null) { el.success(xmlHttp.responseText); }
            } else if (el.dataType.toString().toUpperCase() == "XML") {
                //接收xml文档
                if (el.success != null) { el.success(xmlHttp.responseXML); }
            } else if (el.dataType.toString().toUpperCase() == "JSON") {
                //将josn字符串转换为js对象
                if (el.success != null) { el.success(eval("(" + xmlHttp.responseText + ")")); }
            }
        }
    }
}

 如何调用?

fxAJAX({
    url: "?action=del",
    type: "post",
    data: "Id=" + id,
    success: function (msg) {//执行成功之后运行到这里
        //console.log('成功')!
    }
});

 

posted on 2014-03-26 17:40  ZenTree  阅读(461)  评论(0编辑  收藏  举报