XMLHttpRequest 对象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++){< p="">

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 对象 -> 指定发送地址及发送方法 -> 指定状态变化处理方法 -> 发送请求,请求发送后状态变化了就会自动调用指定的处理方法。

 

转载请注明:代码学堂>web前端 > ajax技巧 > http://www.uxuew.cn/ajax/6064.html

不同浏览器创建 ajax XMLHTTPRequest对象的方法及兼容性问题总结的更多相关文章

  1. JavaScript使用浏览器内置XMLHttpRequest对象执行Ajax请求

    所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject).XMLHttpRequest 用于在后台与服务器交换数据.这意味着可以在不重新加载整个 ...

  2. 【02】AJAX XMLHttpRequest对象

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

  3. 解决不同浏览器创建不同 XMLHTTP 对象的问题

    function GetXmlHttpObject() { var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XML ...

  4. 几种创建XMLHttpRequest对象的方法

    XMLHttpRequest对象,也就是Ajax交互的核心对象. 这里列举三种创建Ajax对象的方法. 第一种: <!DOCTYPE html> <html> <head ...

  5. 原生Ajax XMLHttpRequest对象

    一.Ajax请求 - 现在常见的前后端分离项目中,一般都是服务器返回静态页面后浏览器加载完页面,运行script中的js代码,通过ajax向后端api发送异步请求获取数据,然后调用回调函数,将数据添加 ...

  6. 【转载并整理】AJAX XmlHttpRequest对象详解

    一. XMLHttpRequest由来及原生介绍 XMLHttpRequest(XHR)是一个API对象,其中的方法可以用来在浏览器和服务器端传输数据.这个对象是浏览器的js环境提供的.从XHR获取数 ...

  7. AJAX——XMLHttpRequest对象的使用

    AJAX是web2.0即动态网页的基础,而XMLHttpRequest对象又是AJAX的核心.XMLHttpRequest对象负责将用户信息以异步通信地发送到服务器端,并接收服务器响应信息和数据 一. ...

  8. 创建ajax异步对象方法

    ajax的xmlhttp对象创建: function createXmlHttp(){ var xmlHttp; try{ // Firefox, Opera 8.0+, Safari xmlHttp ...

  9. Ajax XMLHttpRequest对象的三个属性以及open和send方法

    (1)onreadystatechange 属性onreadystatechange 属性存有处理服务器响应的函数.下面的代码定义一个空的函数,可同时对 onreadystatechange 属性进行 ...

随机推荐

  1. DOM知识梳理

    DOM 我们知道,JavaScript是由ECMAScript + DOM + BOM组成的.ECMAScript是JS中的一些语法,而BOM主要是浏览器对象(window)对象的一些相关知识的集合. ...

  2. Linux命令不熟悉(记录)

    1.回到上一次操作的目录 cd - 2.rz打开上传文件 rz 3.下载某个文件 wget httpdownload 4.根据名字查找文件 find / -name mysql 5.通配符删除 rm ...

  3. PHP基础入门(三)---PHP函数基础

    PHP基础入门(三)---函数 今天来给大家分享一下PHP的函数基础.有了前两章的了解,想必大家对PHP有了一定的基础了解.想回顾前两章的朋友可以点击"PHP基础入门(一)"&qu ...

  4. Spring学习(2)---IOC

    1.接口及面向接口编程 2.什么是IOC 3.Spring的Bean配置 4.Bean的初始化 5.Spring的常用注入方式 (一)接口 用于沟通的中介物的抽象化 实体把自己提供给我外接的一种抽象化 ...

  5. angular路由最基本的实例---简单易懂

    <!DOCTYPE html> <html lang="en" ng-app="myapp"> <head> <met ...

  6. Java程序设计环境概述

    本文主要Java程序设计环境的要点,以及相关注意事项. 一.安装Java开发包 Oracle公司为Linux.Mac OS X.Solaris和Windows提供了Java开发工具包(JDK)的最新. ...

  7. Idea 常用功能汇总,工作中常用技巧

    1.隐藏没用到的文件 比如 IDEA 的项目配置文件(.iml 和.idea),打开 Settings-File Types, 加入要隐藏的文件后缀.  2.常用技巧 2.1 通过Alt+F8查看变量 ...

  8. js替换字符串中所有指定的字符

    第一次发现JavaScript中replace() 方法如果直接用str.replace("-","!") 只会替换第一个匹配的字符.  而str.replac ...

  9. JS如何实现真正的对象常量

    前言 众所周知ES6新增的const关键字可以用来声明常量,但是它只对基本数据类型生效(Number.String.Boolean等),那如果我们想声明一个常量对象呢?该如何实现,Object内置对象 ...

  10. Sql_Case_When用法

    http://wenku.baidu.com/link?url=XBnkUzGtiJFhTnQk5HbmdgndhVEYJdcfDEhSEIFeTRn9-41KMLf_49wKiydNCF-4g3Qi ...