AJAX大家已经都知道了,XMLHttpRequest对象则是AJAX的核心。这篇博客重点总结一下这个对象的使用。

XMLHttpRequest对象的属性和方法:

属性

说明

readyState

表示XMLHttpRequest对象的状态:0:未初始化。对象已创建,未调用open;

1:open方法成功调用,但Sendf方法未调用;

2:send方法已经调用,尚未开始接受数据;

3:正在接受数据。Http响应头信息已经接受,但尚未接收完成;

4:完成,即响应数据接受完成。

Onreadystatechange

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

responseText

服务器响应的文本内容

responseXML

服务器响应的XML内容对应的DOM对象

Status

服务器返回的http状态码。200表示“成功”,404表示“未找到”,500表示“服务器内部错误”等。

statusText

服务器返回状态的文本信息。

 

方法

说明

Open(string method,string url,boolean asynch,

String username,string password)

指定和服务器端交互的HTTP方法,URL地址,即其他请求信息;

Method:表示http请求方法,一般使用"GET","POST".

url:表示请求的服务器的地址;

asynch:表示是否采用异步方法,true为异步,false为同步;

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

Send(content)

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

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

SetRequestHeader(String header,String Value)

设置HTTP请求中的指定头部header的值为value.

此方法需在open方法以后调用,一般在post方式中使用。

getAllResponseHeaders()

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

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

getResponseHeader(String header)

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

Abort()

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

  
XMLHttpRequest对象的兼容性:
  • IE8/IE9、Opera Mini 完全不支持xhr对象

  • IE10/IE11部分支持,不支持 xhr.responseTypejson

  • 部分浏览器不支持设置请求超时,即无法使用xhr.timeout

  • 部分浏览器不支持xhr.responseTypeblob

  
XMLHttpRequest对象的应用:
  1. function ajax(url,postData,fnSuc){
  2. var xhr;
  3. if(window.XMLHttpRequest){
  4. xhr= new XMLHttpRequest();
  5. //console.log(xhr);
  6. }else{
  7. // alert("不存在");
  8. xhr= new ActiveXObject("Microsoft.XMLHTTP");
  9. //alert(xhr);
  10. }//XMLHttpRequest兼容性处理
  11. xhr.open("POST", url , true);//指定请求的方式post/get,url,true/false(异步/同步)
  12. xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  13. xhr.onreadystatechange = function(){//请求状态改变时触发
  14. var XMLHttpReq = xhr;
  15. if (XMLHttpReq.readyState == 4) {//数据接受完成
  16. if (XMLHttpReq.status == 200) {//服务器返回的http状态码,200表示成功
  17. var text = XMLHttpReq.responseText;//服务器响应的文本内容
  18. fnSuc(JSON.parse(text));//请求成功时返回的数据
  19. }
  20. }
  21. };
  22. postData = (function(obj){ // 转成post需要的字符串
  23. var str = "";
  24. for(var prop in obj){
  25. str += prop + "=" + obj[prop] + "&"
  26. }
  27. return str;
  28. })(postData);
  29. xhr.send(postData);//向服务器发送请求
  30. }

这是XMLHttpRequest简单的应用,使用时直接调用就行了,使用的是post请求可以传参,返回的是json数据便于处理,当然有其他需求可以根据情况添加。

AJAX——理解XMLHttpRequest对象的更多相关文章

  1. js进阶ajax的XMLHttpRequest对象的status和statustext属性(如果ajax和php联合使用的话:open连接服务器的第二个参数文件路径改成请求php的url即可)

    js进阶ajax的XMLHttpRequest对象的status和statustext属性(如果ajax和php联合使用的话:open连接服务器的第二个参数文件路径改成请求php的url即可) 一.总 ...

  2. 详解AJAX核心 —— XMLHttpRequest 对象 (上)

    我要说的内容都是非常基础的内容,高手就免看了,如果看了欢迎给点意见啊.新手或者对低层还不是很了解的人可以看看,帮助理解与记忆. XMLHttpRequest 对象是AJAX功能的核心,要开发AJAX程 ...

  3. [置顶] Ajax核心--XMLHttpRequest对象

    XMLHttpRequest 对象是AJAX功能的核心,学习XMLHttpRequest对象就先从创建XMLHttpRequest 对象开始,了解在不同的浏览器中创建XMLHttpRequest 对象 ...

  4. Ajax核心--XMLHttpRequest对象

    XMLHttpRequest 对象是AJAX功能的核心,学习XMLHttpRequest对象就先从创建XMLHttpRequest 对象开始,了解在不同的浏览器中创建XMLHttpRequest 对象 ...

  5. AJAX——核心XMLHttpRequest对象

    AJAX大家已经都知道了,是为了实现异步通讯,提高用户体验度,而将很多旧知识(XML,DOM,JavaScript,HTML,Jquery,Css……)重新融合的一个新的知识框架.而,XMLHttpR ...

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

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

  7. AJAX - 创建 XMLHttpRequest 对象

    XMLHttpRequest 是 AJAX 的基础. XMLHttpRequest 对象 所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject ...

  8. jquery与ajax的XMLHttpRequest对象介绍

    首先  认识一个对象 这个对象叫XMLHttpRequest XMLHttpRequest对象可以提供在不刷新页面的情况下向服务器发送异步请求,并且接受服务器端返回的结果.从而实现局部更新当前页面的功 ...

  9. AJAX 核心 —— XMLHTTPRequest 对象回顾

    一.AJAX概述 不使用 AJAX 的网页,如果要更新内容,需要重载整个页面. AJAX ( Asynchronous Javascript And XML ,异步 Javascript 和 XML) ...

随机推荐

  1. Visual Studio使用技巧 +谷歌浏览器使用技巧总结

    一.总结下visual studio常用的使用技巧,有助于提高效率: 1.给代码行打标记:  ctrl + K :给行打标记:ctrl + K + N:切换标记,即使当前页关闭了,也可以适用此快捷键快 ...

  2. DSP处理器和ARM处理器的区别以及各自应用在那些领域

    由于工作经常接触到各种多核的处理器,如TI的达芬奇系列芯片拥有1个DSP核3个ARM核.那么DSP处理器和ARM处理器各自有什么区别,各自适合那些领域? DSP:digital signal proc ...

  3. 测开之路九十:css的引用方式

    第一种:内联,直接在标签里面加style属性,优先级别最高,但是不利于维护 第二种:页面嵌入,在head标签里面写一个style标签,以类选择器的形式写入,优先级别第二 第三种:外联,样式表链接,单独 ...

  4. pgd 游戏教程 基地

    http://www.pascalgamedevelopment.com/content.php?417-Castle-Game-Engine-6-2-released

  5. bash shell:获取当前脚本的绝对路径(pwd/readlink)

    有时候,我们需要知道当前执行的输出shell脚本的所在绝对路径,可以用dirname实现. 我们知道 dirname 可以获取一个文件所在的路径,dirname的用处是: 输出已经去除了尾部的”/”字 ...

  6. SpringBoot(五) -- SpringBootWeb登录示例

    一.解决index.html访问 在SpringBoot中默认访问的首页是静态资源文件夹下的index.html,无法被Thymeleaf模板引擎解析,因此我们可以定义一个controller将默认请 ...

  7. Java-集合第四篇Queue集合

    1.什么是Queue 模拟队列数据结构,先进先出(FIFO),从队尾加元素,从队头取元素.     2.Queue接口中定义了如下几个方法: 1>void add(Object o):将指定元素 ...

  8. spring-第十六篇之AOP面向切面编程之Spring AOP

    1.上一篇介绍了AspectJ在AOP的简单应用,让我们了解到它的作用就是:开发者无需修改源代码,但又可以为这些组件的方法添加新的功能. AOP的实现可分为两类(根据AOP修改源码的时机划分): 1& ...

  9. 硬核!如何模拟 5w+ 的并发用户?

    来自:http://t.cn/ES7KBkW 本文将从负载测试的角度,描述了做一次流畅的5万用户并发测试需要做的事情. 你可以在本文的结尾部分看到讨论的记录. 快速的步骤概要 编写你的脚本 使用JMe ...

  10. 基本数据类型间的运算(不包括boolean)

    一 基本数据类型的间的运算  (不包括boolean) 1.自动类型提升 : 小容量的变量和大容量的变量做运算结果用大容量的变量的类型来接收. byte , short , char -> in ...