理解 理解 问题是 我怕那样 没有前因后果 倒是不知道我要做什么  所以就全贴出来了this.Request = function(url, options){
        try{
            Object.extend(this, Ajax.init);
            Object.extend(this.options, options||{});    //将会覆盖Ajax.init.options中的存在的属性的默认值
            this.options.url = url;            var util = Ajax.prototype.Util(this.options);            var transport = this.getTransport;
            var callback = new Ajax.callback();
                util.props.callback = function(){
                        try{
                            callback.callback(transport, util);
                        }catch(e){
                        }
                }            var request = new Ajax.prototype.Request(this.getTransport);
                request.request(util.props);
            return this;
        }catch(e){
        }
    }Ajax.prototype.Request = function(transport){
this.request = function(options){
        try{
            if(options.asynchronous === true){
                this.transport.onreadystatechange = this.onStateChange.bind(this, options.callback);
            }
            this.transport.open(options.method, options.url, options.asynchronous, options.username, options.password);
            this.setHeaders(options.headers, options.method, options.contentType, options.encoding);
            this.transport.send(options.sendData);            if(options.asynchronous === false&&!!this.transport.overrideMimeType === true){
                this.onStateChange(options.callback);
            }
            if(this.transport.readyState === 4){
                  transport.onreadystatechange = Class.emptyFunction;    //avoid memory leak in IE
            }
        }catch(e){
        }
    }
this.onStateChange = function(callback){
        try{
            var response = new Ajax.prototype.Response(this.transport);
            var readyState = response.readyState();
            if(client.Browser.Firefox === true&&readyState === 1){
                alert("readyState: "+readyState);
            }
            callback();
        }catch(e){
        }
    }
}Ajax.prototype.Response = function(transport){
this.response = function(){
        try{
            var data;
            if(this.readyState() === 4){
                var ContentType = this.getHeaders("Content-type");
                var pattern = new Array();
                    pattern[0] = /^\s*(text|application)\/(x-)?[a-zA-Z]*script(;.*)?\s*$/i;                switch(true){
                    case ContentType.include("text/xml"):
                        data = this.transport.responseXML;
                        break;
                    case pattern[0].test(ContentType):
                        data = unescape(this.transport.responseText.substr(1, data.length-2));
                        break;
                    default:
                        data = this.transport.responseText;
                        break;
                }
            }else{
                data = "data: "+this.readyState();
            }
            return data;
        }catch(e){
        }
    }
}我觉得就出在这几个地方