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对象

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

二、注册回调方法

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

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

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

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

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

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

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

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

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

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

  1. $.ajax()所有参数详解

    原文:https://www.cnblogs.com/everest33Tong/p/6159700.html [一]$.ajax()所有参数详解 url: 要求为String类型的参数,(默认为当前 ...

  2. ajax方法参数详解与$.each()和jquery里面each方法的区别

    JQuery中$.ajax()方法参数详解 url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为g ...

  3. MVC之Ajax.BeginForm使用详解之更新列表 mvc验证jquery.unobtrusive-ajax

    MVC之Ajax.BeginForm使用详解之更新列表   1.首先,请在配置文件设置如下:(该项默认都存在且为true) <add key="UnobtrusiveJavaScrip ...

  4. winxp计算机管理中服务详解

    winxp计算机管理中服务详解01 http://blog.sina.com.cn/s/blog_60f923b50100efy9.html http://blog.sina.com.cn/s/blo ...

  5. cocos2dx常见的46中+22中动作详解

    cocos2dx常见的46中+22中动作详解 分类: iOS2013-10-16 00:44 1429人阅读 评论(0) 收藏 举报 bool HelloWorld::init(){    ///// ...

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

    转自:http://blog.csdn.net/qinjuning/article/details/7310620Android中Context详解 ---- 你所不知道的Context 大家好,  ...

  7. iOS中-Qutarz2D详解及使用

    在iOS中Qutarz2D 详解及使用 (一)初识 介绍 Quartz 2D是二维绘图引擎. 能完成的工作有: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成 ...

  8. 【转】declare-styleable的使用(自定义控件) 以及declare-styleable中format详解

    原文网址:http://www.cnblogs.com/622698abc/p/3348692.html declare-styleable是给自定义控件添加自定义属性用的 1.首先,先写attrs. ...

  9. Python中dict详解

    from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...

随机推荐

  1. FZU 2107 Hua Rong Dao(dfs)

    Problem 2107 Hua Rong Dao Accept: 318 Submit: 703 Time Limit: 1000 mSec Memory Limit : 32768 KB Prob ...

  2. poj1185 炮兵阵地【状压DP】

    炮兵阵地 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 32802   Accepted: 12650 Descriptio ...

  3. PHP搭建(windows64+apache2.4.7+mysql-5.6+php5.5+phpMyAdmin)和Discuz安装

    以下文章参考的3个来源,在加上本人搭建过程中遇到的问题的修复完善笔记: <PHP环境的搭建和Discuz!安装> http://www.myxzy.com/post-386.html ht ...

  4. Python开发【项目】:博客后台

    概述 通过自己写的博客后台代码.思路,来与武sir的代码进行一个差异化的比较,记录之间的差距,改善以后写代码的思路 博客后台这个项目,对之前Django学习的各个知识点都有涉及到,非常重要 用户登录验 ...

  5. Python开发【十八章】:Web框架

    Web框架本质 1.众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 #!/usr/bin/env python # -*- codin ...

  6. Navicat运行sql文件报错out of memory

    下载并安装mysql workbench:

  7. sql server 里的文件和文件组使用

    转自:https://www.cnblogs.com/woodytu/p/5821827.html 参考:https://www.sqlskills.com/blogs/paul/files-and- ...

  8. php源码编译常见错误解决方案大全

    php源码编译常见错误解决方案大全http://www.cnlvzi.com/index.php/Index/article/id/143 在CentOS编译PHP5的时候有时会遇到以下的一些错误信息 ...

  9. PhotoSwipe中文API(二)

    配置 选项是在键 - 值对添加作为参数传递给PhotoSwipe构造,例如通过: var options = { index: 3, escKey: false, // ui option timeT ...

  10. 【开发者笔记】揣摩Spring-ioc初探,ioc是不是单例?

    前言: 控制反转(Inversion of Control,英文缩写为IoC)把创建对象的权利交给框架,是框架的重要特征,并非面向对象编程的专用术语.它包括依赖注入(Dependency Inject ...