﻿function ajax(method,synchronous){
 
    this._httpReq = false;  /*ajax初始化对象*/
    this.method = method;  /*get|post*/
    this.syn = synchronous;   /*是否采用异步请求，默认true*/
 
    this.url = "";   /*提交异步请求的url地址*/
    this.resType = "";  /*异步请求返回数据类型text|xml*/
    this.callback = "";  /*异步请求完成后的回滚函数*/
    this.loading = "";  /*load函数*/
    this.content = null; /*Ajax中send方法的参数*/
    this.readystate = -1; /*ajax的请求状态*/
    this.state = -1;  /*http请求响应代码*/
 
 
 /************ get/set方法开始 ***************/
     //设置提交异步请求的url地址
     this.setUrl = function (url){
          this.url = url;
     }
 
     //设置异步请求返回数据类型text|xml
     this.setResType = function (restype){
          this.resType = restype;
     }
 
     //设置回滚函数
     this.setCallback = function (func){
          this.callback = func;
     }
 
     //设置load函数
     this.setLoading = function (loadFunc){
          this.loading = loadFunc;
     }
 
     //设置send自带的参数值，默认null
     this.setContent = function (contents){
        this.content = contents;
     }
/*********get/set方法结束*******/
 
 /*********状态显示方法*********/
     //调用window.alert方法
     this.alert = function (msg){
         window.alert(msg);
     }
 
 //调用window.status的方法
     this.status = function (msg){
          window.status = msg;
     }
 /*********状态显示方法结束*********/
 
 /*************执行方法开始*****************/
     //创建HttpXMLRequest
     this.createXMLRequest = function(){
     if(window.XMLHttpRequest){
           this._httpReq = new XMLHttpRequest();
   
           if(this._httpReq.overrideMimeType){
               this._httpReq.overrideMimeType("text/xml");
           }
      }else if(window.ActiveXObject){
            try{
                 this._httpReq = new ActiveXObject("Msxml2.XMLHTTP");
            }catch(e){
                  try{
                       this._httpReq = new ActiveXObject("Microsoft.XMLHTTP");
                  }catch(e){}
            } 
      }
 }
 
     //初始化ajax对象
     this.init = function(){
          this.createXMLRequest();
     }
 
     //发送一个http请求
     this.send = function (){
          if(this.resType.toLowerCase()=="post"){
                  _httpReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
          }
          this._httpReq.open(this.method,this.url,this.syn);
          this._httpReq.send(this.content);
     }
 
        //取消一个http请求
        this.abort = function (){
               this._httpReq.abort();
        }
 
      this.callbackState = function(){
            switch(this._httpReq.readyState){
                   case 0:
                            this.readystate = 0;
                            break;
                   case 1:
                            this.readystate = 1;
                            break;
                   case 2:
                            this.readystate = 2;
                            break;
                   case 3:
                            this.readystate = 3;
                            break;
                   case 4:
                            this.readystate = 4;
                            switch(this._httpReq.status){
                                   case 200:
                                           eval(this.callback);
                                           break;
                                   case 202:
                                           this.status("请求处理中，还没处理完毕！");
                                           break;
                                   case 400:
                                           this.status("错误的请求！");
                                           break;
                                   case 404:
                                           this.status("请求资源未找到！");
                                           break;
                                   case 500:
                                           this.status("内部服务器错误，请联系管理员！");
                                           break;
                                         case 411:
                                           eval(this.callback);
                                           break; 
                                   default:
                                           this.status("返回数据失败,"+this._httpReq.status);
                                           break;
                              }
                              break;
                   default:
                           this.readystate = 0;
                           break;
             }
     }

     this.onReadyStateChange = function (){
            var owner = this;
            this._httpReq.onreadystatechange = function(){
                   owner.callbackState.call(owner);
            }
     }
 /*************执行方法结束*****************/
}