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<xmlhttp_arr.length;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","http://www.jb51.net/jaryle",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对象的创建与浏览器的兼容问题的更多相关文章

  1. AJAX - 创建 XMLHttpRequest 对象

    XMLHttpRequest 是 AJAX 的基础. XMLHttpRequest 对象 所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject ...

  2. Ajax学习系列——创建XMLHttpRequest对象

    Ajax - 创建XMLHttpRequest对象 首先介绍什么是XMLHttpRequest: XMLHttpRequest是Ajax的基础.中文可以解释为可扩展超文本传输请求.术语缩写为XHR. ...

  3. Ajax中的XMLHttpRequest对象详解

    XMLHttpRequest对象是Ajax技术的核心.在Internet Explorer 5中,XMLHttpRequest对象以ActiveX对象引入,被称之为XMLHTTP,它是一种支持异步请求 ...

  4. 详解AJAX核心 —— XMLHttpRequest 对象 (上)

    我要说的内容都是非常基础的内容,高手就免看了,如果看了欢迎给点意见啊.新手或者对低层还不是很了解的人可以看看,帮助理解与记忆. XMLHttpRequest 对象是AJAX功能的核心,要开发AJAX程 ...

  5. 详解AJAX核心中的XMLHttpRequest对象

    转自:http://developer.51cto.com/art/200904/119577.htm XMLHttpRequest 对象是AJAX功能的核心,要开发AJAX程序必须从了解XMLHtt ...

  6. Ajax中的XMLHttpRequest对象详解(转)

    XMLHttpRequest对象是Ajax技术的核心.在Internet Explorer 5中,XMLHttpRequest对象以ActiveX对象引入,被称之为XMLHTTP,它是一种支持异步请求 ...

  7. 【02】AJAX XMLHttpRequest对象

    AJAX XMLHttpRequest对象   XMLHttpRequest 对象用于与服务器交换数据,能够在不重新加载整个网页(刷新)的情况下,对网页进行部分更新. XMLHttpRequest 对 ...

  8. AJAX-创建XMLHttpRequest对象

    AJAX-创建XMLHttpRequest对象 1.XMLHttpRequest是AJAX的基础,所有现在浏览器都支持,用于在后台与服务器交换数据,也就意味着可以在不加载整个页面的情况下对整个页面进  ...

  9. XMLHttpRequest 对象

    XMLHttpRequest 对象 XML XSLTXML 解析器XMLHttpRequest 对象用于在后台与服务器交换数据. 什么是 XMLHttpRequest 对象? XMLHttpReque ...

随机推荐

  1. cout 格式化输出

    一直习惯于C语言的printf函数来打印,突然有一天要用cout来打印,发现有点不适应. 原来cout也是有格式化输出的. 首先要引入头文件 #include<iostream> // 在 ...

  2. IO边读边写

      using (FileStream fs = new FileStream(@"C:\Users\Desktop\lijia1.txt",FileMode.Open))     ...

  3. 修改WAMP中mysql默认空密码

    WAMP安装好后,mysql密码是为空的,那么要如何修改呢?其实很简单,通过几条指令就行了,下面我就一步步来操作. 首先,通过WAMP打开mysql控制台. 提示输入密码,因为现在是空,所以直接按回车 ...

  4. Java Static关键字详解

    提起static关键字,相信大家绝对不会陌生,但是,想要完全说明白,猛的一想,发现自己好像又说不太明白... ...比方说,昨天被一个同学问起的时候... ... 当然,不是所有人都像我一样学艺不精的 ...

  5. VirtualBox上搭建Ubuntu开发环境

    软件版本: VirtualBox虚拟机:5.1.8 for Windows hosts  x86/amd64 Ubuntu系统:Ubuntu 14.04.5 LTS  Desktop (32-bit) ...

  6. Linux的简单介绍和常用命令的介绍

    Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...

  7. flume+kafka+spark streaming整合

    1.安装好flume2.安装好kafka3.安装好spark4.流程说明: 日志文件->flume->kafka->spark streaming flume输入:文件 flume输 ...

  8. Hbuilder快捷键

    Hbuilder编辑器功能挺强大,体积相对来说比较小,下面是一些常用到的快捷键,尽快熟练使用,成为不用鼠标的大神!哈哈哈!!! alt+↓ 跳转到下一个可编辑区: ctrl+enter 向下换行: c ...

  9. python学习 3笔记

    merge dict def merge(defaults, override): r = {} for k, v in defaults.items(): if k in override: if ...

  10. C#启用管理员权限运行程序

    方法一:关闭程序重新请求打开 static class Program { [STAThread] static void Main() { Application.EnableVisualStyle ...