千家信息网

XMLHttpRequest中的ajax是怎样的

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇文章为大家展示了XMLHttpRequest中的ajax是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。调用function(Url) { var
千家信息网最后更新 2026年11月03日XMLHttpRequest中的ajax是怎样的

本篇文章为大家展示了XMLHttpRequest中的ajax是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

调用

function(Url) {  var XML = new XMLHttpRequest();  XML.onreadystatechange = function() {    if (XML.readyState == 4)    {      if (XML.status == 200)      {        //XML.responseText      }      else      {        //XML.statusText      }    }    else    {      //数据加载中...    }  };  XML.open("GET",Url);  XML.send(null);};

定义XMLHttpRequest 适应不同的浏览器

// IE supportif (window.ActiveXObject && !window.XMLHttpRequest){  window.XMLHttpRequest = function()    {      var msxmls = new Array('Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP');      for (var i = 0; i < msxmls.length; i++)      {        try         {          return new ActiveXObject(msxmls[i]);        }         catch (e)        {        }      }      return null;    };}
// Opera supportif (window.opera && !window.XMLHttpRequest){  window.XMLHttpRequest = function()  {    this.readyState = 0; // 0=uninitialized,1=loading,2=loaded,3=interactive,4=complete    this.status = 0; // HTTP status codes    this.statusText = '';    this._headers = [];    this._aborted = false;    this._async = true;    this._defaultCharset = 'ISO-8859-1';    this._getCharset = function()     {      var charset = _defaultCharset;      var contentType = this.getResponseHeader('Content-type').toUpperCase();      val = contentType.indexOf('CHARSET=');      if (val != -1)       {        charset = contentType.substring(val);      }      val = charset.indexOf(';');      if (val != -1)      {        charset = charset.substring(0, val);      }      val = charset.indexOf(',');      if (val != -1)      {        charset = charset.substring(0, val);      }      return charset;    };    this.abort = function()    {      this._aborted = true;    };    this.getAllResponseHeaders = function()    {      return this.getAllResponseHeader('*');    };    this.getAllResponseHeader = function(header)    {      var ret = '';      for (var i = 0; i < this._headers.length; i++)      {        if (header == '*' || this._headers[i].h == header)        {          ret += this._headers[i].h + ': ' + this._headers[i].v + '\n';        }      }      return ret;    };    this.getResponseHeader = function(header)    {      var ret = getAllResponseHeader(header);      var i = ret.indexOf('\n');      if (i != -1)      {        ret = ret.substring(0, i);      }      return ret;    };    this.setRequestHeader = function(header, value)    {      this._headers[this._headers.length] = {h:header, v:value};    };    this.open = function(method, url, async, user, password)    {      this.method = method;      this.url = url;      this._async = true;      this._aborted = false;      this._headers = [];      if (arguments.length >= 3)       {        this._async = async;      }      if (arguments.length > 3)       {        opera.postError('XMLHttpRequest.open() - user/password not supported');      }      this.readyState = 1;      if (this.onreadystatechange)      {        this.onreadystatechange();      }    };    this.send = function(data)    {      if (!navigator.javaEnabled())      {        alert("XMLHttpRequest.send() - Java must be installed and enabled.");        return;      }      if (this._async)      {        setTimeout(this._sendasync, 0, this, data);      }       else      {        this._sendsync(data);      }    };    this._sendasync = function(req, data)    {      if (!req._aborted)      {        req._sendsync(data);      }    };    this._sendsync = function(data)    {      this.readyState = 2;      if (this.onreadystatechange)      {        this.onreadystatechange();      }      var url = new java.net.URL(new java.net.URL_(window.location.href), this.url);      var conn = url.openConnection();      for (var i = 0; i < this._headers.length; i++)      {        conn.setRequestProperty(this._headers[i].h, this._headers[i].v);      }      this._headers = [];      if (this.method == 'POST')      {
      // POST data        conn.setDoOutput(true);        var wr = new java.io.OutputStreamWriter(conn.getOutputStream(), this._getCharset());        wr.write(data);        wr.flush();        wr.close();      }      // read response headers      // NOTE: the getHeaderField() methods always return nulls for me :(      var gotContentEncoding = false;      var gotContentLength = false;      var gotContentType = false;      var gotDate = false;      var gotExpiration = false;      var gotLastModified = false;      for (var i = 0; ; i++)      {        var hdrName = conn.getHeaderFieldKey(i);        var hdrValue = conn.getHeaderField(i);        if (hdrName == null && hdrValue == null)        {          break;        }        if (hdrName != null)        {          this._headers[this._headers.length] = {h:hdrName, v:hdrValue};          switch (hdrName.toLowerCase())          {            case 'content-encoding': gotContentEncoding = true; break;            case 'content-length' : gotContentLength = true; break;            case 'content-type' : gotContentType = true; break;            case 'date' : gotDate = true; break;            case 'expires' : gotExpiration = true; break;            case 'last-modified' : gotLastModified = true; break;          }        }      }
      // try to fill in any missing header information      var val;      val = conn.getContentEncoding();      if (val != null && !gotContentEncoding) this._headers[this._headers.length] = {h:'Content-encoding', v:val};      val = conn.getContentLength();      if (val != -1 && !gotContentLength) this._headers[this._headers.length] = {h:'Content-length', v:val};      val = conn.getContentType();      if (val != null && !gotContentType) this._headers[this._headers.length] = {h:'Content-type', v:val};      val = conn.getDate();      if (val != 0 && !gotDate) this._headers[this._headers.length] = {h:'Date', v:(new Date(val)).toUTCString()};      val = conn.getExpiration();      if (val != 0 && !gotExpiration) this._headers[this._headers.length] = {h:'Expires', v:(new Date(val)).toUTCString()};      val = conn.getLastModified();      if (val != 0 && !gotLastModified) this._headers[this._headers.length] = {h:'Last-modified', v:(new Date(val)).toUTCString()};      // read response data      var reqdata = '';      var stream = conn.getInputStream();      if (stream)      {        var reader = new java.io.BufferedReader(new java.io.InputStreamReader(stream, this._getCharset()));        var line;        while ((line = reader.readLine()) != null)        {          if (this.readyState == 2)          {            this.readyState = 3;            if (this.onreadystatechange)            {              this.onreadystatechange();            }          }          reqdata += line + '\n';        }        reader.close();        this.status = 200;        this.statusText = 'OK';        this.responseText = reqdata;        this.readyState = 4;        if (this.onreadystatechange)        {          this.onreadystatechange();        }        if (this.onload)        {          this.onload();        }      }      else      {        // error        this.status = 404;        this.statusText = 'Not Found';        this.responseText = '';        this.readyState = 4;        if (this.onreadystatechange)        {          this.onreadystatechange();        }        if (this.onerror)        {          this.onerror();        }      }    };  };}

// ActiveXObject emulation

if (!window.ActiveXObject && window.XMLHttpRequest){  window.ActiveXObject = function(type)  {    switch (type.toLowerCase())    {      case 'microsoft.xmlhttp':        case 'msxml2.xmlhttp':        case 'msxml2.xmlhttp.3.0':        case 'msxml2.xmlhttp.4.0':        case 'msxml2.xmlhttp.5.0':        return new XMLHttpRequest();    }    return null;  };}

上述内容就是XMLHttpRequest中的ajax是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

内容 技能 知识 不同 简明 简明扼要 就是 数据 文章 更多 浏览器 篇文章 行业 资讯 资讯频道 频道 一亮 储备 浏览 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 哈尔滨大商圈互联网科技有限公司 广州紫鲸互联网科技有限公司 上海互联网科技有限公司 青岛互联网科技公司 奇酷互联网络科技 广州互联网络科技有限公司 善班互联网科技有限公司 科技互联网公司logo 苏州大垚互联网科技 长亮科技 互联网金融 互联网金融和金融科技 知域互联网科技有限公司大骗子 乌鲁木齐新华智原互联网科技学校 卓翼科技产业互联网合作 云南互联网科技学费 互联网科技的前景 盐城市攀科互联网科技有限公司 河南商务圈互联网科技有限公司 上海旺乐尼互联网科技有限公司 上海睿民互联网科技有限公司 科技股互联网 互联网电商科技 北京互联网科技有限公司 互联网科技上市公司 玖二柒互联网科技公司待遇 广州慧亚互联网科技怎么样 中科明德北京互联网科技 北京天晋互联网科技有限公司 互联网科技企业文化
0