![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
创建XmlHttpRequest对象
注意事项:
由于XMLHttpRequest对象还不是W3C的标准,不同浏览器中其实现的方式是不同的.
在 IE 7 以前的版本中,XMLHttpRequest对象是以ActiveX 组件实现的,而在Firefox、Opera等浏览器中 XMLHttpRequest对象是作为浏览对象来提供的。值得庆幸的是,IE 7 中XMLHttpRequest对象可以作为浏览器对象使用,从而实现XMLHttpRequest对象创建的统一。
在较老版本的IE中创建XMLHttpRequest对象的基本语法格式为:
var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
在较新版本的IE中创建XMLHttpRequest对象的基本语法格式为:
var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
而在 IE 7 以及其他非IE浏览器中使用如下语法格式创建XMLHttpRequest对象的基本语法格式为:
var xmlHttp=new XmlHttpRequest();
由于在不同浏览器中XMLHttpRequest对象的创建方式不同,在实际开发过程中必须考虑代码的兼容性。
使用 XMLHttpRequest对象 发送请求
1,打开请求
xmlHttp为一个XMLHttpRequest对象实例
xmlHttp.open(method,url,[async],[user],[password]);
method: 字符串类型数据,表示http请求方法的类型,例如:POST、GET、PUT 不区分大小写。
url: 字符串类型数据,表示请求的URL地址,可以为绝对地址也可以为相对地址。
async:参数可选,布尔类型数据,指定此请求是否为异步方式,默认为true,如果为真,当状态改变时会调用onreadystatechange属性指定回调函数。
user:参数可选,字符串类型数据,如果服务器需要验证,此出指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。
password:参数可选,字符串类型数据,指定验证信息中的密码,如果用户名为空,则此值将被忽略。
2,发送请求
使用OPEN方法打开请求之后,就可以发送请求了。
xmlHttp.send(body);
body 就是发送的内容
send方法的同步或异步方式取决于open方法中的async参数,如过async为false,此方法将会等待请求完成或者超时时才会返回。如果open方法的async参数为true,次方法将立即返回。
如果使用POST方法发送亲,那么在使用send方法发送请求之前必须使用XMLHttpRequest对象的setRequestHeader方法按照如下方式设置HTTP头信息:
xmlHttp:setRequestHeader("Content-type","appliction/x-www-form-urlencoded");
使用GET请求传输的数据量较小,一般不超过2KB。使用POST请求传输的数据量可以认为是不受限制的,但往往受到服务器的限制。而且使用GET请求其参数被附加在URL地址后面,缺少案例安全性。所以建议使用POST 请求而不使用GET请求。
虽然使用POST请求和GET请求都可以将参数附加在URL地址后面,但是在发送请求时,还是应该为send方法传入一个null作为参数。如果使用不带参数的send方法发送请求,在Firefox浏览器中将不能正常运行。
3,设置回调函数(onreadystatechange)
异步的原因:
用户在一个操作层上面操作页面,而服务器在另一个操作层上响应请求,并触发onreadystatechange属性指定回调方法。