`

《Ajax基础教程》学习笔记---第2章

阅读更多

使用XMLHttpRequest对象

2.1 XMLHttpRequest对象概述

在使用 XMLHttpRequest对象发送请求和处理响应之前,必须先用JavaScript创建一个XMLHttpRequest对象。
由于XMLHttpRequest不是一个W3C标准,所以可以采用多种方法使用JavaScript来创建XMLHttpRequest的实例。IE把XMLHttpRequest实现一个ActiveX对象,其他浏览器(如Firefox、Safari和Opera)把他实现为一个本地JavaScript对象。由于存在这些差别,JavaScript代码中必须包含有关的逻辑,从而使用ActiveX技术或者使用本地JavaScript对象技术来创建XMLHttpRequest的一个事例。

如果浏览器支持ActiveX对象,就可以使用ActiveX来创建XMLHttpRequest对象。否则,就要使用本地JavaScript对象技术来创建。代码清单2-1展示了编写跨浏览器的JavaScript代码来创建XMLHttpRequest对象实例。

代码清单2-1 创建XMLHttpRequest对象的一个实例

var  xmlHttp;
function  createXMLHttpRequest() {
  
if  (window.ActiveXObject) {
    xmlHttp 
=   new  ActiveXObject( "  Microsoft.XMLHTTP " );
  }
else   if (window.XMLHttpRequest) {
    xmlHttp 
=   new  XMLHttpRequest();
  }

}
  

可以看到,创建XMLHttpRequest对象相当容易。首先,要创建一个全局作用域变量xmlHttp来保存这个对象的引用。createXMLHttpRequest方法完成创建XMLHttpRequest实例的具体工作。这个方法只有简单的分支逻辑(选择逻辑)来确定如果创建对象。对window.ActiveXObject的调用会返回一个对象,也可能返回null,if语句会把调用返回的结果看作是true或false(如果返回对象则为true,返回null则为false),以此指示浏览器是否支持ActiveX控件,相应地得知浏览器是不是IE。如果确定是,则通过实例化ActiveXObject的一个新实例来创建XMLHttpRequest对象,并传入一个串指示要创建何种类型的ActiveX对象。在这个例子中,为构造函数提供的字符串是Microsoft.XMLHTTP,这说明我们想创建XMLHttpRequest的一个实例。

如果window.ActiveXObject调用失败(返回null),JavaScript就会转到else语句分支,确定浏览器是否把XMLHttpRequest实现为一个本地JavaScript对象。如果存在window.XMLHttpRequest,就会创建XMLHttpRequest的一个实例。

2.2 方法和属性

表2-1显示了 XMLHttpRequest对象的一些典型方法。

表2-2 标准XMLHttpRequest属性

属    性

描    述

abort() 停止当前请求
getAllResponseHeaders() 把HTTP请求的所有响应首部作为“键-值”对返回
getResponseHeader("header") 返回指定首部的串值
open("method","url") 建立对服务器的调用。method参数可以是GET、POST和PUT。url参数可以是相对URL或绝对URL。这个方法还包括3个可选的参数
send(content) 向服务器发送请求
setRequestHeader("header","value") 把指定首部设置为所提供的值。在设置任何首部之前必须先调用open()


方法的详细说明:
void open(string method,string url,boolean asynch,string username,string password):
这个方法会建立对服务器的调用。这是初始化一个请求的纯脚本方法,它有两个必要参数,还有3个可选参数。要提供调用的特定方法(GET、POST 或 PUT),还要提供所调用资源的URL。另外还可以传递一个Boolean值,指示这个调用是异步的还是同步的。默认值为true,表示请求本质上是异步的。如果这个参数为false,处理就会等待,直到从服务器返回响应为止。由于异步调用是使用Ajax的主要优势之一,所以倘若这个参数设置为false,从某种程度上XMLHttpRequest对象的初衷不太相符。不过,前面已经说过,在某些情况下这个参数设置为false也是有用的,比如在持久存储页面之前可以先验证用户的输入。最后两个参数不说自明,允许你指定一个特定的用户名和密码。

void send(content):
这个方法具体向服务器发出请求。如果请求声明为异步的,这个方法就会立即返回,否则它会等待直到接收到响应为止。可选参数可以是DOM对象的实例、输入流、或者串。传入这个方法的内容会作为请求体的一部分发送。

void serRequestHeader(string header,string value):
这个方法为HTTP请求中一个指定的首部设置值。他有两个参数,第一个串表示要设置的首部,第二个串表示要在首部中放置的值。需要说明,这个方法的内容会作为请求体的一部分发送。

void abort():
顾名思义,这个方法就是要停止请求。

string getAllResponseHeaders():
这个方法的核心功能对Web应用开发人员应该很熟悉了,它返回一个串,其中包含HTTP请求的所有响应首部,首部包括ContentLength、Date和URI。

string getResponseHeader(string header):
这个方法与getAllResponseHeaders()是对应的,不过它有一个参数表示你希望得到的指定首部值,并且把这个值作为串返回。

处理这些方法,XMLHttpRequest对象还提供了许多属性,如表2-2所示。处理XMLHttpRequest时可以大量使用这些属性。

表2-2 标准XMLHttpRequest属性

属    性

描    述

onreadystatechange 每个状态改变时都会出发这个事件处理器,通常会调用一个JavaScript函数
readyState 请求的状态。有5个可取值:0 = 未初始化、1 = 正在加载、2 = 已加载、
3 = 交互中、4 = 完成 
responseText 服务器的响应,表示为一个串
responseXML 服务器的响应,表示为XML。这个对象可以解析为一个DOM对象
status 服务器的HTTP状态码(200对应OK,404对应Not Found(未找到),等等)
statusText HTTP状态码的对应文本(OK或Not Found(未找到)等等)

 

分享到:
评论

相关推荐

    dojo精品中文教程(全)

    dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras dojo学习笔记(六)- ContentPane dojo学习笔记(四) dojo的拖拽示例以及疑问! 介绍dojo事件 使用 Dojo 工具包和 JSON-RPC 构建...

    免费Eclipse插件开发学习笔记-源代码1至24章.zip

    "免费Eclipse插件开发学习笔记-源代码1至24章.zip" 是一个压缩包,包含了从基础到进阶的Eclipse插件开发学习资料。 这个压缩包很可能是某个教程或书籍的配套资源,提供了24个章节的源代码示例,帮助读者逐步理解并...

    jquery 学习笔记源码 1-3章

    总结来说,《jQuery学习笔记源码1-3章》提供了从基础到实践的全面教程,通过学习和实践这些源码,你将能够熟练掌握jQuery的基本操作,如选择元素、处理事件和创建动画,为后续的Web开发工作打下坚实基础。...

    Python 笔记源码【笔记+教程+示例源码】.zip

    14-HTML&CSS第二部分 15-前端项目 08-多线程 16- flask 23-Numpy基础,数据分析 31-股票分析系统 21-爬虫基础 12-电子词典 07-网络编程 13-HTMLCSS第一部分 10-正则表达式 17- Ajax 05-面向对象 02-Python基础第一...

    韩顺平编写的java学习笔记(全)

    韩顺平编写的《Java学习笔记》全面涵盖了Java的基础知识和发展方向,不仅适合初学者入门,也适合进阶开发者深入了解Java的各项技术栈。通过对本书的学习,读者能够掌握Java的核心概念、编程技巧以及实际应用场景,为...

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全)

    以上是对韩顺平Java从入门到精通视频教程学习笔记的部分整理,包含了Java的基础概念、开发流程、历史背景、开发工具的选择以及简单的程序示例等内容。这些基础知识对于Java初学者来说至关重要,能够帮助他们顺利入门...

    网页设计与制作基础教程(第2版)课件姜慧霖

    "网页设计与制作基础教程(第2版)课件姜慧霖"是一套针对初学者精心编排的教学资源,旨在帮助学习者快速掌握网页设计的基本概念和技术。 在这一教程中,你可以期待学习到以下核心知识点: 1. **HTML基础知识**:...

    韩顺平java从入门到精通视频教程学习笔记整理

    韩顺平 Java 从入门到精通视频教程学习笔记整理 本资源是韩顺平的 Java 教程笔记,总共 94 讲,涵盖了 Java 基础知识点,从 Java 的基本概念到高级开发技术。笔记涵盖了 Java 基础知识点,包括 Java 语言特点、开发...

    jquery学习笔记.rar

    接着,"jQ学习第二季(1).rar"与"jQ学习第二季(2).rar"、"jQ学习第二季(3).rar"可能深入讲解jQuery的事件处理和动画效果。事件处理是jQuery中的关键特性,你可以学习到如何绑定和触发各种用户交互事件,如点击、鼠标...

    韩顺平java视频教程(全94讲)学习笔记整理

    ### 韩顺平Java视频教程(全94讲)学习笔记整理 #### Java平台概述 - **J2SE(Java Platform Standard Edition)**: 标准版Java开发平台,适用于桌面应用程序开发。 - **J2EE(Java Platform Enterprise Edition)**...

    51CTO下载-韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全)

    - **记事本**:最基础的编辑器,适合初学者学习语法。 - **JCreator**、**JBuilder**:这些工具已不再流行。 - **NetBeans**、**Eclipse**:主流的集成开发环境 (IDE),支持代码编写、调试等功能。 ### 如何选择...

    李炎恢JavaScript-pdf文档笔记

    《李炎恢JavaScript-pdf文档笔记》是一份详细记录了JavaScript编程语言基础知识至高级应用的教程,涵盖了从第一章到第三十四章的丰富内容。这个压缩包包含了一份PDF文档,旨在帮助学习者深入理解并掌握JavaScript的...

    揭开AJAX神秘的面纱(AJAX个人学习笔记)第1/5页

    2. **AJAX基本控件**:微软提供了五个基础AJAX控件,包括UpdatePanel、Timer、ScriptManagerProxy、AsyncFileUpload和ConfirmButton。这些控件简化了异步更新的过程,如UpdatePanel可以实现局部刷新,而无需编写复杂...

    传智播客2012年C#基础班笔记(第四天)苏坤主讲

    - 表明该资料为2012年由苏坤老师主讲的C#基础课程第四天的学习笔记。 - **描述:** 介绍了传智播客2012年C#基础班的笔记内容,共分为10个部分。 **标签解析:** - **传智播客**:知名IT培训机构。 - **笔记**:...

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(完整清晰版)

    "韩顺平 Java 从入门到精通视频教程(全 94 讲)学习笔记整理(完整清晰版)" 本资源提供了一个完整的 Java 学习笔记,从基础到高级,涵盖了 Java SE、Java EE 和 Java ME 等方面的知识点。笔记的内容包括 Java ...

    echarts数据可视化项目教程项目笔记源码

    **ECharts 数据可视化项目教程详解** ECharts 是一个由百度开发的开源JavaScript图表库,它提供了丰富的图表类型,包括柱状图、折线图、饼图等,支持自定义交互和动画效果,广泛应用于Web数据可视化场景。在这个...

    JQuery教程-从零开始学习jQuery

    该教程不仅仅是一份学习笔记,而是希望能够系统地、深入浅出地教授JQuery的知识,并且尽量做到全面。大部分知识点来自图灵出版社出版的《JQuery实战》一书,这本书被推荐给读者作为深入学习的参考。 ##### 什么是...

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全).docx

    【Java 平台与版本】 ...总的来说,这个文档是韩顺平 Java 入门到精通视频教程的学习笔记,涵盖了从 Java 平台介绍、开发环境配置、语言基础到 Web 开发框架等多个方面,是全面学习 Java 技术的宝贵资源。

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全).doc

    ### Java 平台概述 Java 是一种广泛使用的高级编程语言,以其强大的跨平台特性而闻名。...通过以上步骤,我们已经对 Java 的基础知识有了初步的了解,接下来可以根据自己的兴趣和发展方向深入学习 Java 的各个领域。

    PHP YII框架教程+笔记.zip

    Yii Composer是Yii2引入的一个特性,它利用了PHP的Composer依赖管理工具,使得安装和管理第三方库变得更加方便。同时,Yii的缓存系统支持多种缓存策略,如文件缓存、数据库缓存、APC缓存等,帮助提升应用程序的响应...

Global site tag (gtag.js) - Google Analytics