日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

創(chuàng)建xmlhttp請求&管理請求

 躍來躍去 2009-12-15
var Bind = function(object, fun) {
    var args = Array.prototype.slice.call(arguments).slice(2);
    return function() {
          return fun.apply(object, args.concat(Array.prototype.slice.call(arguments)));
     }
}

var Request = function() {
    this.requestexe = this.getNewRequest();
    this.action = 'get';
    this.url = '';
    this.ondone = null;
    this.onerror = null;
    this.headers = null;
    this.body = null;
    this.isstart = false;
    this.timer = null;
    this.paras = null;
}
Request.prototype = {
    count : 0,
    getNewRequest : function(){
        try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
        try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
        try { return new XMLHttpRequest(); } catch(e) {}
        alert("XMLHttpRequest not supported");
        return null;
    },
    send : function(){
        if(this.isstart) return;
        if(this.getCount() > 1){
            setTimeout(Bind(this, this.send),500);
            return;
        }
        this.waitOne();
        this.isstart = true;
        this.url = this.url +  "&" + new Date().getTime().toString();
        this.requestexe.open(this.action,this.url,true);
        if(this.headers){
            for (var header in this.headers) {
                var val = headers[header];
                if (typeof(val) !== "function")
                    this.requestexe.setRequestHeader(header, val);
            }
        }
        if (this.action.toLowerCase() === "post") {
            if ((this.headers === null) || !headers['Content-Type']) {
                this.requestexe.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            }
                if (!this.body) {
                this.body = "";
            }
        }
        var request = this;
        var httpexe = this.requestexe;
        this.requestexe.onreadystatechange = function(){
            if(httpexe.readyState == 4){
                clearTimeout(request.timer);
                Bind(request,request.releaseOne());
                if(httpexe.status == 200){
                    if(typeof(request.ondone) === "function"){
                        request.ondone(httpexe,request.paras);
                    }
                }
                else{
                    if(typeof(request.onerror) === "function"){
                        request.onerror(httpexe,request.paras);
                    }
                }
            }
        }
        this.timer = setTimeout( function(){
            request.requestexe.abort();
            clearTimeout(request.timer);
            request.releaseOne();
        },20000);
        this.requestexe.send(this.body);
    },
    releaseOne: function(){
        if(Request.prototype.count >= 0)
        Request.prototype.count--;
    },
    waitOne:function(){
        Request.prototype.count++;
    },
    getCount:function(){
        return Request.prototype.count;
    }
}

在使用時如下:
    var request = new Request();
    request.action = 'get';
    request.url = 'requesturl';
    request.ondone = function(result,paras){
        var p = result.responseText;
    };
    request.onerror = function(result,paras){
        alert(result.status);
    };
    request.paras = '';
    request.send();       

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多