解析ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题
来源:互联网 发布:软件人才外包公司 编辑:程序博客网 时间:2024/06/05 07:07
了解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对象:
function CreateXMLHttp(){ //创建一个新变量并赋值false,使用false作为判断条件说明还没有创建XMLHTTPRequest对象 var flag=true; var xmlhttp = null; try{ //尝试创建 XMLHttpRequest 对象,除 IE 外的浏览器都支持这个方法。 xmlhttp=new XMLHttpRequest(); }catch(e){ try{ //使用较新版本的 IE 创建 IE 兼容的对象(Msxml2.XMLHTTP)。 xmlhttp=ActiveXobject("Msxml12.XMLHTTP"); }catch(e1){ try{ //使用较老版本的 IE 创建 IE 兼容的对象(Microsoft.XMLHTTP)。 xmlhttp=ActiveXobject("Microsoft.XMLHTTP"); }catch(e2){ flag=false; } } }//判断是否成功的例子: if(!flag){ throw new RuntimeExecption("创建XMLHTTPRequest 对象失败"); }else{ 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","",true);
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);
}
}
}
注意:所以我们应该按照上面的流程来记忆:创建XMLHttpRequest 对象 ->指定发送地址及发送方法 ->指定状态变化处理方法 -> 发送请求,请求发送后状态变化了就会自动调用指定的处理方法。
- 解析ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题
- 解析ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题
- 创建ajax对象及解决不同浏览器对XMLHttpRequest对象的兼容问题
- ajax的核心javascript对象XMLHttpRequest创建
- AJAX的核心XMLHttpRequest对象
- Ajax的核心对象XMLHttpRequest
- AJAX的核心对象XMLHttpRequest
- 为何XMLHttpRequest对象是AJAX的核心
- Ajax的核心——XMLHttpRequest 对象
- XMLHttpRequest对象是AJAX的核心
- ajax的核心XMLHttpRequest
- AJAX不同浏览器的XMLHttpRequest对象生成
- 【Ajax 2】封装Ajax的核心对象:XMLHttpRequest对象
- 不同浏览器创建 XMLHttpRequest 对象的方法
- 创建跨浏览器访问的 XMLHttpRequest 对象
- ajax创建xmlhttprequest对象的常用语句。。。。
- 创建XML对象的浏览器兼容问题
- Ajax(判断浏览器创建XMLHttpRequest对象)
- EditView设置边框
- 水平垂直居中方案与flexbox布局
- 清橙OJ A1212. 剪枝
- 一个不错的redis gui客户端
- 数据结构上机测试2-1:单链表操作A
- 解析ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题
- C# 鼠标事件
- Working out - b(dp之路)
- 从左到右将二进制数转化为十进制数
- vue2.0 router遇到的问题
- ASP.NET AJAX Advance Tips & Tricks (9) DropDownList在Firefox下的奇怪现象和解决方案——谁的BUG?
- 百度云服务器搭建(一)
- ASP.NET AJAX Advance Tips & Tricks (10) 解决使用AJAX Extender时的页面导出(Word/Excel)问题(Extender control 'XXX'
- vsftpd服务自启动的三种方法