创建xmlHttpReuqest和向服务器发送请求

//使用封装方法只需要关心提供http的请求方法,url地址,数据,成功和失败的回调方法

//类的构造定义,主要职责就是新建出XMLHttpRequest对象
var MyXMLHttpRequest = function() {
    var xmlhttprequest;
    if (window.XMLHttpRequest) {
        xmlhttprequest = new XMLHttpRequest();
        if (xmlhttprequest.overrideMimeType) {
            xmlhttprequest.overrideMimeType("text/xml");
        }
    } else if (window.ActiveXObject) {
        var activeName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
        for (var i = 0 ; i < activeName.length; i++) {
            try{
                xmlhttprequest = new ActiveXObject(activeName[i]);
                break;
            } catch(e) {

            }
        }
    }
    if (xmlhttprequest == undefined || xmlhttprequest == null) {
        alert("XMLHtttpRequest对象创建失败!!");
    } else {
        this.xmlhttp = xmlhttprequest;
    }
}
//用户发送请求的方法
MyXMLHttpRequest.prototype.send = function(method,url,data,callback,failback) {
    if (this.xmlhttp != undefined && this.xmlhttp != null) {
        method = method.toUpperCase();
        if (method != "GET" && method != "POST") {
            alert("HTTP的请求方法必须是GET或POST!!");
            return;
        }
        if (url == null || url == undefined) {
            alert("HTTP的请求地址必须设置!");
            return;
        }
        var tempxmlhttp = this.xmlhttp;
        this.xmlhttp.onreadystatechange = function() {
            if (tempxmlhttp.readyState == 4) {
                if (tempxmlhttp.status == 200) {
                    var responseText = tempxmlhttp.responseText;
                    var reponseXML = tempxmlhttp.responseXML;
                    if (callback == undefined || callback == null) {
                        alert("没有设置处理数据正确返回的方法!");
                        alert("返回的数据:" + responseText);
                    } else {
                        callback(responseText,reponseXML);
                    }
                } else {
                    if (failback == undefined || failback == null) {
                        alert("没有设置处理数据返回失败的处理方法!");
                        alert("HTTP的响应码:" + tempxmlhttp.status + ",响应码的文本信息:" + tempxmlhttp.statusText);
                    } else {
                        failback(tempxmlhttp.status,tempxmlhttp.statusText);
                    }
                }
            }
        }
        //解决缓存的转换
        if (url.indexOf("?") >= 0) {
            url = url + "&t=" + (new Date()).valueOf();
        } else {
            url = url + "?t=" + (new Date()).valueOf();
        }

        //解决跨域的问题
        if (url.indexOf("http://") >= 0) {
            url.replace("?","&");
            url = "Proxy?url=" + url;
        }

        this.xmlhttp.open(method,url,true);

        //如果是POST方式,需要设置请求头
        if (method == "POST") {
            this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        }

        this.xmlhttp.send(data);
    } else {
        alert("XMLHtttpRequest对象创建失败,无法发送数据!");
    }
}
MyXMLHttpRequest.prototype.abort = function() {
    this.xmlhttp.abort();
}

 

/*

//加入需要的封装,可以使用如下代码
var xmlhttp = new MyXMLHttpRequest();
xmlhttp.send("GET","AJAXServer?name=123",null,callback,faliback);

 */

 这是这几天学的一些Ajax的封装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值