MLHttpRequest 对象是AJAX功能的核⼼,要开发AJAX程序必须从了解XMLHttpRequest 对象开始。
了解XMLHttpRequest 对象就先从创建XMLHttpRequest 对象开始,在不同的浏览器中创建XMLHttpRequest 对象使⽤不同的⽅法:先看看IE创建XMLHttpRequest 对象的⽅法(⽅法1):
var xmlhttp=ActiveXobject(\"Msxml12.XMLHTTP\");//较新的IE版本创建Msxml12.XMLHTTP对象 var xmlhttp=ActiveXobject(\"Microsoft.XMLHTTP\");//较⽼的IE版本创建Microsoft.XMLHTTP对象
⽽ Mozilla、Opera、Safari 和⼤部分⾮IE的浏览器都使⽤下⾯这种⽅法(⽅法2)创建XMLHttpRequest 对象: var xmlhttp=new XMLHttpRequest();
注意:实际上Internet Explorer 使⽤了⼀个名为 XMLHttp 的对象,⽽不是 XMLHttpRequest 对象,⽽ Mozilla、Opera、Safari 和 ⼤部分⾮Microsoft 浏览器都使⽤的是后者(下⽂统称 XMLHttpRequest 对象)。IE7开始也开始使⽤XMLHttpRequest 对象了。因此我们需要创建⼀个能兼容多浏览器的XMLHTTPRequest对象:第⼀种⽅法:
var xmlhttp=false;//创建⼀个新变量并赋值false,使⽤false作为判断条件说明还没有创建XMLHTTPRequest对象 function CreateXMLHttp(){ try{
xmlhttp=new XMLHttpRequest();//尝试创建 XMLHttpRequest 对象,除 IE 外的浏览器都⽀持这个⽅法。}catch(e){ try{
xmlhttp=ActiveXobject(\"Msxml12.XMLHTTP\");//使⽤较新版本的 IE 创建 IE 兼容的对象(Msxml2.XMLHTTP)。}catch(e){ try{
xmlhttp=ActiveXobject(\"Microsoft.XMLHTTP\");//使⽤较⽼版本的 IE 创建 IE 兼容的对象(Microsoft.XMLHTTP)。}catch(failed){
xmlhttp=false;//如果失败了还保持false}}}
return xmlhttp;}
判断是否成功的例⼦:if(!xmlhttp){ 创建xmlhttp失败}else{
创建xmlhttp成功}
第⼆种⽅法: if(typeof(XMLHttpRequest)==\"undefined\" && window.ActiveXObject){ function XMLHttpRequest(){
var xmlhttp_arr=[\"MSXML2.XMLHTTP\;
var xmlhttp;
for(i=0;i return xmlhttp;}} //这个是除了IE之外的浏览器创建XMLHttpRequest对象var xmlhttp=new XMLHttpRequest(); 创建xmlhttp成功后,然后再来看看它的⼀些属性和⽅法吧,还有最重要的onreadystatechange事件句柄 ⽅法: open() 初始化http请求参数,包括URL和http⽅法,但是不发送请求; abort() 取消当前响应,关闭连接并断开所有⽹络未结束的活动; getAllResponseHeaders() 把http响应头部作为未解析字符串返回; getResponseHeaders) 返回指定的http响应头的值; send() 发送http请求使⽤传递给open()⽅法的参数,以及传个该⽅法的可选请求体; setResponseHeader() 向⼀个打开但没有发送的请求设置或添加⼀个Http请求。 属性: readyState 说明http请求的状态;(有5个状态分别是 0 表⽰没有初始化; 1 表⽰读取中 2 表⽰已读取 3 交互中(接受中) 4 完成) responseText 说明为服务器接收到得响应体,如果没有接收到数据就返回空字符串; responseXML 说明对请求的回应 解析为XML并⽤document对象返回; status 说明http请求的状态; statusText 说明http请求状态不是以数字形式⽽是⽤名称; onreadystatechange 是readySate状态改变时调⽤事件的函数。下⾯是⼀个发送请求数据并返回结果的xmlhttpRequest对象; ⽣成⼀个XMLHTTPRequest对象 var xmlhttp=CreatXMLHttp(); xmlhttp.open(\"get\ xmlhttp.onReadyStateChange=getresult; //怎么告诉XMLHttpRequest 对象状态变化时让谁来处理这个变化呢⽤到⼆种⽅法:⼀种是匿名⽅法 xmlhttp.onReadyStateChange=function(){处理变化的代码} 另⼀种⽅法:指定⽅法:xmlhttp.onReadyStateChange=getresult; function getresult(){处理变化的代码} xmlhttp.send(); function getresult(){ if(xmlhttp.readyState==4){ //当readyState的状态等于4时表⽰接收到数据 if(xmlhttp.status==200){ //这个时候就需要⽤到status属性,即由服务器返回的 HTTP 状态代码。 xmlhttp.status 等于200时表⽰传输过程完 整没有错误 alert(xmlhttp.responseText);}} } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务