十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
今天就跟大家聊聊有关ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
我们提供的服务有:做网站、网站建设、微信公众号开发、网站优化、网站认证、番禺ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的番禺网站制作公司
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","Microsoft.XMLHTTP"];
var xmlhttp;
for(i=0;i if(xmlhttp=new ActiveXObject(xmlhttp_arr[i])) break; } 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","https://www.jb51.net/jaryle",true); 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); } 注意:所以我们应该按照上面的流程来记忆:创建XMLHttpRequest 对象 -> 指定发送地址及发送方法 -> 指定状态变化处理方法 -> 发送请求,请求发送后状态变化了就会自动调用指定的处理方法。 看完上述内容,你们对ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。
//怎么告诉XMLHttpRequest 对象状态变化时让谁来处理这个变化呢用到二种方法:一种是匿名方法xmlhttp.onReadyStateChange=function(){处理变化的代码}
另一种方法:指定方法:xmlhttp.onReadyStateChange=getresult;
}
}
网站标题:ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题是怎样的
URL分享:http://shouzuofang.com/article/jcgeie.html