XMLHttpRequest对象详解一
现在很多浏览器 都可以直接从JavaScript中初始化http请求并获取结果。这个http请求对象就是指XMLHttpRequest对象。
一、同步请求
在IE里创建XMLHttpRequest对象,使用的是ActiveObject对象。
var oRequest=new ActiveXObject(“Microsoft.XMLHTTP”);
在创建好这个对象后,就可以使用它的open()方法指定发送的请求。该方法有 三个(共有5个,三个可省略)参数,分别是:指定发送的类型(get或post),请求的url,指定发送的方式(同步为false或异步true,默认为true)
请求打开后,然后使用send()方法将其发送出去。
二、异步请求
1. 异步:
异步是指ajax应用软件和主机服务器进行联系的方式。如果使用ajax的异步模式,浏览器就不必等待用户的请求操作,也不必更新整个窗口就 可以显示新获取的数据。
2. XMLHttpRequest对象详解
XMLHttpRequest对 象是整个Ajax(Asynchronous Javascript And XML)开发的基础。它提供了客户端和服务器端进行异步通信 的能力。一方面它向服务器提交一个请求,获取指定页面的内容,另一方面将指定的数据提交到服务器端。所有的数据经过JavaScript中间层处理,按照需 要的方式对数据进行加工,结合DOM和CSS,做出各种Ajax应用程序。
1) 创建XMLHttpRequest对象
var XMLHttpReq;
//创 建XMLHttpRequest对象
if(window.XMLHttpRequest){//Mozilla浏览器
XMLHttpReq=new XMLHttpRequest();
}
else if(window.ActiveXObject){//IE浏览器
try{//IE5.5
XMLHttpReq=new ActiveXObject(“Microsoft.XMLHTTP”);
}catch(e){//IE5.0
XMLHttpReq=new ActiveXObject(“Msxm12.XMLHTTP”);
}
}
…
2) 使用open方法指定发送的请求
创建好XMLHttpRequest对象,就可以使用了。
open方法创建一个请求,并 准备向服务器发送。
open(method, url, asynchronous, user, password);
参数分别为:
method:指定请求的类 型,为get或post
url:指定请求的指定,可以是绝对或相对地址,并可带查询字符串
asynchronous:可 选参数,表示请求是同步还是异步,异步为true,同步为false,默认为true。
user:可选参数,指定请求 的用户名
password:可选参数, 指定请求的密码
例如:XMLHttpReq.open(“get”, “ajax.jsp?open=creatuser”);//创建一个请求,用get方法请求相对地址为ajax.jsp?open=creatuser的网页
3) 使用send方法发送一个请求
send(body);
body参数:表示要想服务器 发送的数据,其格式为查询字符串的形式。
例如:var body=”user=jack&&sex=male&age=
若open方法指定是get方式,这些参数作为查询字符串提交。若open方法指定是post方 式,这些参数作为http的post方 法提交。
若不发送数据,可以使用XMLHttpReq.send(null);
若open方法使用是异步请求,send方法执行后会立即执行下一条语句,若则,send方法一直阻塞,直到请求完成或超时才执行下一条语句。这也是同步和异步的区别
4) 使用onreadystatechange事件捕获请求的状态变化
在发送一个请求后,往往无法知道请求什么时候完成,所以必须利用事件机制来捕获请求的状态。
onreadystatechange事件可以指定一个事件处理函数来处理XMLHttpRequest对象的执行结果。例如:
XMLHttpReq.onreadystatechange=function(){…//事件处理语句}
事件需在send方法之前进行,以保证请求发送前就有捕获请求状态变化的代码。
热门日志
分类
- Django(4)
- ssdb(1)
- Mac(7)
- C(1)
- memcache(1)
- Python(32)
- Vim(8)
- sed(2)
- ansible(3)
- awk(4)
- shell(3)
- about(1)
- git(9)
- bat(4)
- svn(0)
- docker(1)
- Tornado(1)
- go(2)
- 架构(18)
- Vue(1)
- game(2)
- Html(6)
- Java(8)
- Mysql(37)
- Ajax(2)
- Jsp(1)
- Struts(8)
- Linux(72)
- JavaScript(39)
- Staruml(0)
- Mouth(1)
- Php(102)
- Windows(8)
- Message(48)
- Lua(10)
- Compute(1)
- Redis(7)
- Nginx(12)
- Jquery(1)
- Apache(1)
- cocos2d-x(8)