XMLHttpRequest 对象的三个常用的属性:

1. onreadystatechange 属性
  onreadystatechange 属性存有处理服务器响应的函数。

请求状态改变的事件触发器(readyState变化时会调用这个属性上注册的javascript函数)。

下面的代码定义一个空的函数:

xmlHttp.onreadystatechange=function(){
    // 我们需要在这里写一些代码
  }
2.readyState 属性
   readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。

readyState有五种可能的值
  0 - (Uninitialized 未初始化)对象已创建,未调用open()方法
  1 - (Loading 载入)open()方法成功调用,但send()方法未调用
  2 - (Loaded 载入完成)send()方法已经调用,尚未开始接受数据
  3 - (Interactive 交互)正在接受数据,Http响应头信息已经接受,但尚未接收完成
  4 - (Completed 完成)响应数据接受完成,可以在客户端调用了

我们要向这个 onreadystatechange 函数添加一条 if 语句,来测试我们的响应是否已完成(意味着可获得数据):

xmlHttp.onreadystatechange=function(){
     if(xmlHttp.readyState==4){
       // 从服务器的response获得数据
     }
 }
3.responseText 属性
   可以通过 responseText 属性来取回由服务器返回的数据,该属性代表的是从Server端返回的一个string格式的响应。
   document.myForm.time.value=xmlHttp.responseText;

4.responseXML 属性

代表从Server端传回的XML格式的数据,可以直接被当作DOM对象使用。(服务器响应的XML内容对应的DOM对象)

5.status属性

这个在HTTP响应中的响应码。200代表响应成功,404表示“未找到”,500表示“服务器内部错误”等。

所以一般在status==200才进行响应数据的操作,如果不是200,那说明HTTP响应不正常,也就不用处理。

6.statusText属性

服务器返回状态的文本信息,即HTTP协议中跟在响应码后面的相应说明串。例如200 后面就会跟着OK。

XMLHttpRequest 对象的方法

1.open(String method,string url,boolean asynch,String username,String password)方法

open() 主要有三个参数需要设定。
   第一个参数method定义发送请求所使用的方法,一般使用"GET","POST"。
   第二个参数url表示请求的服务器的地址。
   第三个参数asynch表示是否采用异步方法,true为异步,false为同步。

后边两个参数可以不指定,username和password分别表示用户名和密码,提供http认证机制需要的用户名和密码。

例如:xmlHttp.open("GET","/NewServlet",true);

2.send(content) 方法

send(content) 方法将请求送往服务器。

向服务器发出请求,如果采用异步方式,该方法会立即返回。

content可以指定为null表示不发送数据,其内容可以是DOM对象,输入流或字符串。

3.setRequestHeader(String header,String Value)

设置HTTP请求中的指定头部header的值为value,此方法需在open方法以后调用,一般在post方式中使用。

4.getAllResponseHeaders()

返回包含Http的所有响应头信息,其中相应头包括Content-length,date,uri等内容。

返回值是一个字符串,包含所有头信息,其中每个键名和键值用冒号分开,每一组键之间用CR和LF(回车加换行符)来分隔!

5.getResponseHeader(String header)

返回Http响应头中指定的键名header对应的值

6.abort()

停止当前http请求。对应的XMLHttpRequest对象会复位到未初始化的状态。

XMLHttpRequest对象进行Ajax操作的示例代码如下:

  1. var xmlhttp;
  2. function loadAjax(url){
  3. xmlhttp=null;
  4. if (window.XMLHttpRequest){// code for all new browsers
  5. xmlhttp=new XMLHttpRequest();
  6. }else if (window.ActiveXObject){// code for IE5 and IE6
  7. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9. if (xmlhttp!=null){
  10. xmlhttp.onreadystatechange=state_Change;//定义回调函数
  11. xmlhttp.open("POST",url,true);
  12. xmlhttp.send(null);
  13. }else{
  14.    alert("你的浏览器不支持xmlhttp!");
  15. }
  16. }
  17. function state_Change(){
  18. if (xmlhttp.readyState==4){
  19. if (xmlhttp.status==200){// 200 = OK
  20. var message=xmlhttp.responseText;//获取服务端响应的文本
  21. //var domXml=xmlhttp.responseXML;//获取服务器响应的XML内容对应的DOM对象,使用的前提是,服务器端需要设置content-type为text/xml
  22. //其它代码
  23. }else{
  24. alert("解析响应数据出现问题");
  25. }
  26. }
  27. }

网上找的别人写的封装好的代码,感觉不错,贴在这:

  1. //类的构建定义,主要职责就是新建XMLHttpRequest对象
  2. var MyXMLHttpRequest=function(){
  3. var xmlhttprequest;
  4. if(window.XMLHttpRequest){
  5. xmlhttprequest=new XMLHttpRequest();
  6. if(xmlhttprequest.overrideMimeType){
  7. xmlhttprequest.overrideMimeType("text/xml");
  8. }
  9. }else if(window.ActiveXObject){
  10. var activeName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
  11. for(var i=0;i<activeName.length;i++){
  12. try{
  13. xmlhttprequest=new ActiveXObject(activeName[i]);
  14. break;
  15. }catch(e){
  16.  
  17. }
  18. }
  19. }
  20.  
  21. if(xmlhttprequest == undefined || xmlhttprequest == null){
  22. alert("XMLHttpRequest对象创建失败!!");
  23. }else{
  24. this.xmlhttp=xmlhttprequest;
  25. }
  26.  
  27. //用户发送请求的方法
  28. MyXMLHttpRequest.prototype.send=function(method,url,data,callback,failback){
  29. if(this.xmlhttp!=undefined && this.xmlhttp!=null){
  30. method=method.toUpperCase();
  31. if(method!="GET" && method!="POST"){
  32. alert("HTTP的请求方法必须为GET或POST!!!");
  33. return;
  34. }
  35. if(url==null || url==undefined){
  36. alert("HTTP的请求地址必须设置!");
  37. return ;
  38. }
  39. var tempxmlhttp=this.xmlhttp;
  40. this.xmlhttp.onreadystatechange=function(){
  41. if(tempxmlhttp.readyState==4){
  42. if(temxmlhttp.status==200){
  43. var responseText=temxmlhttp.responseText;
  44. var responseXML=temxmlhttp.reponseXML;
  45. if(callback==undefined || callback==null){
  46. alert("没有设置处理数据正确返回的方法");
  47. alert("返回的数据:" + responseText);
  48. }else{
  49. callback(responseText,responseXML);
  50. }
  51. }else{
  52. if(failback==undefined ||failback==null){
  53. alert("没有设置处理数据返回失败的处理方法!");
  54. alert("HTTP的响应码:" + tempxmlhttp.status + ",响应码的文本信息:" + tempxmlhttp.statusText);
  55. }else{
  56. failback(tempxmlhttp.status,tempxmlhttp.statusText);
  57. }
  58. }
  59. }
  60. }
  61.  
  62. //解决缓存的转换
  63. if(url.indexOf("?")>=0){
  64. url=url + "&t=" + (new Date()).valueOf();
  65. }else{
  66. url=url+"?+="+(new Date()).valueOf();
  67. }
  68.  
  69. //解决跨域的问题
  70. if(url.indexOf("http://")>=0){
  71. url.replace("?","&");
  72. url="Proxy?url=" +url;
  73. }
  74. this.xmlhttp.open(method,url,true);
  75.  
  76. //如果是POST方式,需要设置请求头
  77. if(method=="POST"){
  78. this.xmlhttp.setRequestHeader("Content-type","application/x-www-four-urlencoded");
  79. }
  80. this.xmlhttp.send(data);
  81. }else{
  82. alert("XMLHttpRequest对象创建失败,无法发送数据!");
  83. }
  84. MyXMLHttpRequest.prototype.abort=function(){
  85. this.xmlhttp.abort();
  86. }
  87. }
  88. }

XMLHttpRequest对象进行Ajax操作的更多相关文章

  1. JavaScript使用浏览器内置XMLHttpRequest对象执行Ajax请求

    所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject).XMLHttpRequest 用于在后台与服务器交换数据.这意味着可以在不重新加载整个 ...

  2. XMLHttpRequest对象(Ajax)的状态码(readystate) HTTP状态代码(status)

    2018-11-28 14:19:00 来自 :XMLHttpRequest对象(Ajax)的状态码(readystate)  HTTP状态代码(status) XMLHttpRequest对象(Aj ...

  3. AJAX——XMLHttpRequest对象的使用

    AJAX是web2.0即动态网页的基础,而XMLHttpRequest对象又是AJAX的核心.XMLHttpRequest对象负责将用户信息以异步通信地发送到服务器端,并接收服务器响应信息和数据 一. ...

  4. AJAX原理及XMLHttpRequest对象分析

    今天的主题是前端都了解的AJAX,但其中都有哪些知识点,还需要深入分析. 首先揭示AJAX的字面意思,Asynchronous Javascript And XML,通俗点就是“异步Javascrip ...

  5. Ajax中的XMLHttpRequest对象详解

    XMLHttpRequest对象是Ajax技术的核心.在Internet Explorer 5中,XMLHttpRequest对象以ActiveX对象引入,被称之为XMLHTTP,它是一种支持异步请求 ...

  6. 详解AJAX核心 —— XMLHttpRequest 对象 (下)

    继续上一篇的内容上一篇关于XMLHttpRequest 对象发送对服务器的请求只说到了用Get方式,没有说Post方式的.那是因为要说Post方式就需要先说另外一个东西,那就是DOM(Document ...

  7. 原生Ajax XMLHttpRequest对象

    一.Ajax请求 - 现在常见的前后端分离项目中,一般都是服务器返回静态页面后浏览器加载完页面,运行script中的js代码,通过ajax向后端api发送异步请求获取数据,然后调用回调函数,将数据添加 ...

  8. ES6 用Promise对象实现的 Ajax 操作

    下面是一个用Promise对象实现的 Ajax 操作的例子. const getJSON = function(url) { const promise = new Promise(function( ...

  9. ajax原理和XmlHttpRequest对象

    Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得请求数据.要清楚这 ...

随机推荐

  1. WMsg参数常量值

    //WMsg参数常量值: //创建一个窗口 const int WM_CREATE = 0x01; //当一个窗口被破坏时发送 const int WM_DESTROY = 0x02; //移动一个窗 ...

  2. 浅谈SQL中的单引号

    单引号:对很对计算机语言包括(SQL)是做字符串引用的:这个是大家通常知道的作用:但是对SQL语言来说:还有另外一个作用是作引号的转义 总结下:对oracle(sql)的作用. 做字符串引用:例如'a ...

  3. Asp.net Vnext Filters

    ASP.NET MVC 提供Filters(筛选器)之前或之后调用操作方法执行筛选逻辑,和AOP面向切面编程一样. 本文已经同步到<Asp.net Vnext 系列教程 >中] 本章主要介 ...

  4. SlickGrid example 3: 可编辑单元

    <button onclick="grid.setOptions({autoEdit:true})"> 设置自动辅助编辑下一个元素.   代码: <!DOCTYP ...

  5. 20150624_Andriod _web_service_匹配

    using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using S ...

  6. Design T-Shirt 分类: HDU 2015-06-26 11:58 7人阅读 评论(0) 收藏

    Design T-Shirt Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  7. centOS6.5安装SUN-jdk7

    一.下载SUN-JDK1.7.tar.gz文件他 地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1 ...

  8. centos6.5用户管理

    一.centOS6.5用户管理命令 useradd 新增用户 userdel  删除用户 passwd  修改用户密码 二.命令的使用 useradd useradd admin userdel us ...

  9. HTML5/CSS3(PrefixFree.js) 3D文字特效

    之前在园子里看到一个HTML5/CSS3的文字特效(这里),觉得挺好玩的所以小小的研究了下,不过发现代码都是针对webkit以及FF的所以IE跪了. Runjs 我将示例中的代码进行了精简,后来发现C ...

  10. 关于directX最近的学习方案

    目标:弄清楚如何渲染一个地形,以及人物坐标以及摄像机方向,弄清四大矩阵原理 实践: 1.再次学习矩阵相关知识 2.实现红龙本书的地形 3.搜寻这方面资料书籍