ajax封装

			//接收文本:$$.init({url : "test.php", type : "post", data : "name=john", success : function(result){}});
			//接收XML:$$.init({url : "test.xml", type : "get", success : function(result){result.getElementsByTagName()}});
			var $$ = {
				init : function(p){
					this.parameter = p;
					this.xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
					this.type = (this.parameter.type === "post" || this.parameter.type === "POST") ? "POST" : ( (this.parameter.type === "get" || this.parameter.type === "GET") ? "GET" : "POST" );
					this.dataType = this.parameter.dataType;
					this.data = this.parameter.data;
					this.url  = this.getUrl();
					this.isAsync = (this.parameter.isAsync === undefined) ? "TRUE" : "FALSE"; //如果设置为FALSE,则会在返回结果前锁住浏览器
					this.success = (this.parameter.success === undefined) ? alert("请指定接收结果的函数") : this.parameter.success;
					this.xhr.onreadystatechange = function(){$$.getResponse();};
					this.xhr.open(this.type, this.url, this.isAsync);
					this.send();
				},
				getUrl : function(){
					if(this.type === "POST"){return this.parameter.url;}
					if(this.data === undefined){return this.parameter.url;}
					if(this.data.substr(0, 1) === "?"){
						return this.parameter.url + this.data;
					}else{
						return this.parameter.url + "?" + this.data;
					}
				},
				send : function(){
					if(this.type === "POST"){
						this.xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
						this.xhr.send(this.data);
					}else{
						this.xhr.send();
					}
				},
				getResponse : function(){
					if(this.xhr.readyState === 4 && this.xhr.status === 200){
						if(this.parameter.dataType === "document"){
							this.parameter.success(this.xhr.responseXML);
						}else{
							this.parameter.success(this.xhr.responseText);
						}
					}
				}
			};

  

posted @ 2014-03-24 02:41  secern  阅读(179)  评论(0)    收藏  举报