ajax(判断浏览器创建xmlhttprequest对象),XMLHTTPRequest对象的创建与浏览器的兼容问题...

时间:2025-04-02 07:42:19

MLHttpRequest 对象是AJAX功能的核心,要开发AJAX程序必须从了解XMLHttpRequest 对象开始。

了解XMLHttpRequest 对象就先从创建XMLHttpRequest 对象开始,在不同的浏览器中创建XMLHttpRequest 对象使用不同的方法:

先看看IE创建XMLHttpRequest 对象的方法(方法1):

var xmlhttp=ActiveXobject("");//较新的IE版本创建对象

var xmlhttp=ActiveXobject("");//较老的IE版本创建对象

而 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("");//使用较新版本的 IE 创建 IE 兼容的对象()。

}catch(e){

try{

xmlhttp=ActiveXobject("");//使用较老版本的 IE 创建 IE 兼容的对象()。

}catch(failed){

xmlhttp=false;//如果失败了还保持false

}

}

}

return xmlhttp;

}

判断是否成功的例子:

if(!xmlhttp){

创建xmlhttp失败

}else{

创建xmlhttp成功

}

第二种方法:  if(typeof(XMLHttpRequest)=="undefined" && ){

function XMLHttpRequest(){

var xmlhttp_arr=["",""];

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();

("get","http:///jaryle",true);

=getresult;

//怎么告诉XMLHttpRequest 对象状态变化时让谁来处理这个变化呢用到二种方法:一种是匿名方法=function(){处理变化的代码} 另一种方法:指定方法:=getresult;

function getresult(){处理变化的代码}

();

function getresult(){

if(==4){ //当readyState的状态等于4时表示接收到数据

if(==200){ //这个时候就需要用到status属性,即由服务器返回的 HTTP 状态代码。 等于200时表示传输过程完整没有错误

alert();

}

}

}

AJAX - 创建 XMLHttpRequest 对象

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

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

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

Ajax中的XMLHttpRequest对象详解

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

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

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

详解AJAX核心中的XMLHttpRequest对象

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

Ajax中的XMLHttpRequest对象详解(转)

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

【02】AJAX XMLHttpRequest对象

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

AJAX-创建XMLHttpRequest对象

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

XMLHttpRequest 对象

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

随机推荐

【转】windows server 2012清除并重建SID

windows server 2012清除并重建SID 2012-09-17 17:51:51 标签:SID windows server 2012 原创作品,允许转载,转载时请务必以超链接形式标明文 ...

SCRUM报告(1)

我们组的PM是白杰,团队SCRUM 报告如下: 一.第一次spring会议内容: 1.确定所做项目的方向: 2.将调查问卷的结果进行统计,做了需求分析,大致了解了用户的想法: 3.确定了团队计划bac ...

彻底理解PHP的SESSION机制

/acpp/archive/2011/06/10/ 一.默认机制,用磁盘文件来实现PHP会话.配置: ...

java基础---Java---面试题---银行业务调度系统(线程同步锁、枚举、线程池)

银行业务调度系统的项目需求:   模拟实现银行业务调度系统逻辑,具体需求如下:   Ø 银行内有6个业务窗口,1- 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口.   Ø 有三种对应类 ...

【安富莱专题教程第6期】SEGGER的J-Scope波形上位机软件,RTT模式波形上传速度可狂飙到500KB/S左右

说明:1.在实际项目中,很多时候,我们需要将传感器或者ADC的数值以波形的形式显示.通常的解决办法是用串口上位机,USB接口上位机或者MDK的逻辑分析仪功能,使用这三种方式都比较繁琐.本期专题为大家讲 ...

Spark中的一些概念

最近工作用到Spark,这里记一些自己接触到的Spark基本概念和知识. 本文链接:/hhelibeb/p/ 名词 RDD:在高 ...

Virtualbox 虚拟机安装Linux

背景:Win10系统   MSI主板 目标:基于Win10 利用虚拟机Virtualbox安装Linux 准备工作:Ctrl+Alt+Del打开任务管理器——>性能(查看CPU虚拟化是否开启) ...

Sallen-Key Active Butterworth Low Pass Filter Calculator

RC 2nd Order Passive Low Pass Filter The cut-off frequency of second order low pass filter is given ...

一次“ora-12170 tns 连接超时”的经历

win7    64位系统 oracle  10g   64位 plsql之前连接是好使的,突然连接不上,提示错误“ora-12170 tns 连接超时” IP    没有问题 2. ...