第108天:Ajax中XMLHttpRequest详解

在Ajax应用程序中,XmlHttpRequest对象负责将用户信息以异步通信地发送到服务器端,并接收服务器返回的响应信息和数据。

XMLHttpRequest可以提供不重新加载页面的情况下更新网页,在页面加载后再客户端向服务器请求数据,在页面加载后在服务器端接收数据,在后台向客户端发送数据。

XMLHttpRequest和Javascript

Javascript本身并未具备向服务器发送请求的能力,要么使用window.open()方法重新打开一个页面向服务器提交请求,要么使用XMLHttpRequest对象发送请求。不同的是,前者是普通的即同步交互模式,而后者是异步交互方式。

XMLHttpRequest提供了一系列的属性和方法,来向服务器发送异步的http请求;在服务器处理用户请求的过程中,XMLHttpRequest通过属性的状态值来实时反映http请求所处的状态,并根据这些状态指示Javascript做相应的处理;当服务器顺利完成响应用户行为的动作、并将响应数据返回时,XMLHttpRequest提供的response系列方法,可以将这些响应数据以文本、XML Document对象、Ado Stream对象或者unsigned byte数组的方式组装起来,提供给Javascript处理。

使用XMLHttpRequest对象

XMLHttpRequest方法:

1、Open(string method,string url,boolean asynch,String username,string password)
     指定和服务器端交互的HTTP方法,URL地址,即其他请求信息;
     Method:表示http请求方法,一般使用"GET","POST".
     url:表示请求的服务器的地址;
     asynch:表示是否采用异步方法,true为异步,false为同步;
     后边两个可以不指定,username和password分别表示用户名和密码,提供http认证机制需要的用户名和密码。
2、Send(content)
     向服务器发出请求,如果采用异步方式,该方法会立即返回。
     content可以指定为null表示不发送数据,其内容可以是DOM对象,输入流或字符串。
3、SetRequestHeader(String header,String Value)
设置HTTP请求中的指定头部header的值为value.
此方法需在open方法以后调用,一般在post方式中使用。
4、getAllResponseHeaders()
返回包含Http的所有响应头信息,其中相应头包括Content-length,date,uri等内容。
返回值是一个字符串,包含所有头信息,其中每个键名和键值用冒号分开,每一组键之间用CR和LF(回车加换行符)来分隔!
5、getResponseHeader(String header)
返回HTTP响应头中指定的键名header对应的值
6、Abort()
停止当前http请求。对应的XMLHttpRequest对象会复位到未初始化的状态。

XMLHttpRequest属性:

1、readyState
      表示XMLHttpRequest对象的状态:0:未初始化。对象已创建,未调用open;
      1:open方法成功调用,但Sendf方法未调用;
      2:send方法已经调用,尚未开始接受数据;
      3:正在接受数据。Http响应头信息已经接受,但尚未接收完成;
      4:完成,即响应数据接受完成。
2、Onreadystatechange
    请求状态改变的事件触发器(readyState变化时会调用这个属性上注册的javascript函数)。
3、responseText
      服务器响应的文本内容
4、responseXML
     服务器响应的XML内容对应的DOM对象
5、Status
     服务器返回的http状态码。200表示“成功”,404表示“未找到”,500表示“服务器内部错误”等。
6、statusText
      服务器返回状态的文本信息。

使用XMLHttpRequest的五步:

第一步:创建XMLHttpRequest对象
   第二步:注册回调方法
   第三步:设置和服务器交互的相应参数
   第四步:设置向服务器端发送的数据,启动和服务器端的交互
   第五步:判断和服务器端的交互是否完成,还要判断服务器端是否正确返回了数据

代码展示:

1、创建XMLHttpRequest对象

1 <span style="font-size:18px;">//实例化XMLHttpRequest对象
2 function createXMLHttpRequest(){
3     if(window.XMLHttpRequest){
4         xmlHttp = new XMLHttpRequest();
5     }else if(window.ActiveXObject){
6         xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
7     }
8 } </span>

二、注册回调方法

指定当服务器返回信息时客户端的处理方式。只需将相应的处理函数名称赋给XMLHttpRequest对象的onreadystatechange属性即可。

1 <span style="font-size:18px;">xmlHttp.onreadystatechange = callBack; </span>

三、设置和服务器交互的相应参数

1 <span style="font-size:18px;">xmlhttp.open("GET","ajax?name=" +userName,true); </span>

四、设置向服务器端发送的数据,启动和服务器端的交互

1 <span style="font-size:18px;">xmlhttp.send(null);</span>

五、判断和服务器端的交互是否完成,还要判断服务器端是否正确返回了数据

 1 <span style="font-size:18px;">function callback(){
 2      if(xmlhttp.readState==4){
 3          //表示服务器的相应代码是200;正确返回了数据
 4         if(xmlhttp.status==200){
 5             //纯文本数据的接受方法
 6             var message=xmlhttp.responseText;
 7             //使用的前提是,服务器端需要设置content-type为text/xml
 8             //var domXml=xmlhttp.responseXML;
 9             //其它代码
10          }
11     }
12  }</span>  

AJAX使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。

时间: 2025-01-01 20:54:46

第108天:Ajax中XMLHttpRequest详解的相关文章

$.ajax()中参数详解。

身为一个程序员,就少不了与浏览器打交道,与浏览器打交道就少不了要使用到jquery,与jquery打交道就少不了要是用到$.ajax()这个方法.所以我们来看一下$.ajax这个方法. 首先看看权威的官方文档是怎么说的吧. ajax() 方法通过 HTTP 请求加载远程数据. 该方法是 jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象.大多数情况下你无需直接操作该函数,除非你需要操作不常用

JQuery中$.ajax()方法参数详解

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项

JQuery中$.ajax()方法参数详解 (转)

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项

javascript AJAX与Comet详解

          博客专家福利      [限时活动]建专辑得大奖       专访荣浩:流程的永恒之道      当青春遇上互联网,能否点燃你的创业梦      推荐有礼--找出您心中的技术大牛 javascript AJAX与Comet详解 分类: javascript2012-12-24 17:39 367人阅读 评论(0) 收藏 举报 XMLHttpRequest对象 在IE5中,XHR对象是通过MSXML库中的ActiveX对象实现的.在IE中可能会遇到三种不同版本的XHR对象,即M

$.ajax()方法参数详解

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项

$.ajax()所有参数详解

原文:https://www.cnblogs.com/everest33Tong/p/6159700.html [一]$.ajax()所有参数详解 url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetu

Android中Animation详解

Animation从总体来说可以分为两类: Tweened Animations:该类提供了旋转,移动,伸展,淡入淡出等效果 Frame-By-Frame Animations:该类可以创建一个Drawable序列,这些Drawable可以按照指定的事件间隔一个一个显示,和动画片差不多 一.Tweened Animations Tweened Animations也有四种类型: Alpha:淡入淡出效果Scale:缩放效果Rotate:旋转效果Translate:移动效果 设置动画效果可以在XM

Android中Context详解 ---- 你所不知道的Context

转载至 :http://blog.csdn.net/qinjuning 前言:本文是我读<Android内核剖析>第7章 后形成的读书笔记 ,在此向欲了解Android框架的书籍推荐此书. 大家好,  今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中 时刻的在与它打交道,例如:Service.BroadcastReceiver.Activity等都会利用到Context的相关方法 : 说它陌生,完全是 因为我们真正的不懂Context

Android中Context详解 ---- 你所不知道的Context (转载)

Android中Context详解 ---- 你所不知道的Context (转载) http://blog.csdn.net/qinjuning 大家好,  今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中 时刻的在与它打交道,例如:Service.BroadcastReceiver.Activity等都会利用到Context的相关方法 : 说它陌生,完全是 因为我们真正的不懂Context的原理.类结构关系.一个简单的问题是,一个应用