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

一、创建 XMLHttpRequest对象

  不同的浏览器创建XMLHttpRequest对象的方式不同。其中高版本使用XMLHttpRequest创建,而低版本的则是使用ActiveXobject创建,这两个组件均是window对象的成员。应该判断浏览器是否支持XMLHttpRequest,是则创建,否则用ActiveXobject创建;

示例如下:

function makexhr() 
{
  var xhr1;
  try 
  {
    if (window.XMLHttpRequest)  //高版本浏览器
      xhr1 = new XMLHttpRequest();
    else if (window.ActiveXobject)  //针对低版本浏览器
      xhr1 = new ActiveXobject("Microsoft.XMLHTTP");
    return xhr1;
  }
  catch (e) 
  {
    alert("你的浏览器无法创建XMLHttpRequest对象!");
  }
}

二、XMLHttpRequest对象属性和方法

常用属性和方法如下:

1、判断程序执行进程时用到的属性:

  • readyState:状态值,返回当前请求的状态。随着程序的执行,其值会依次变成以下几个值。我们通常要判断其是否等于4
  0   未初始化。   但对象已经建立,此时尚未调用open方法创建http请求
1 初始化。      未调用send方法发送http请求
2 发送数据。    send方法已经被调用
3 数据传送中。因为响应及http头不全,这时通过response系统方法获取部分数据会出现错误
4 传送完成。   此时才能通过response系统方法获取完整的回应数据
  • status:状态码。返回当前HTTP请求的状态码,属性只读。如:404=“文件未找到”,200=“成功”

2、操作XMLHttpRequest对象与服务器交互的方法

  • open:初始化XMLHttpRequest对象。用于创建一个新的http请求,并设置该请求的相关信息。  语法:xhr.open(method,url,[async],[user],[password]),说明如下。
method 提交给服务器的方式:GET、POST
url 要求处理该请求的服务端资源(URL)
async

true:异步处理,即向服务器端发送完数据后,处理其他事情,待服务器答复后再处理返回的数据。

false: 同步处理,即向服务器端发送完数据后,一直等待服务器答复,再进行下一步处理。

user、password 用户名和密码,用于服务器端验证
  • send:发送请求到http服务器并接收回应。语法:xhr.send(data);   参数data为要发送给服务器的内容。如果没有内容要发送,data 3参数应设为null。

  • onreadystatechange:指定当readyState属性改变时的事件处理句柄。即指定 readyState 状态值从0到4每次改变后的处理方法。在事件处理函数中判断readyState状态值并做相应的处理。 语法:xhr.onreadystatechange = function ;function作为事件处理函数, readyState 状态值从0到4每次改变都会触发该函数。所以 function 函数体内应判断 readyState == 4 && xhr.status == 200,只有正确只得到服务器的答复才能进一步执行。

  • abort:取消当前请求;

3、获取服务器的返回数据的属性

  • responseBody:将回应信息正文以unsigned byte 数组形式返回,属性只读。
  • responseText:以字符串的形式返回服务器响应信息,属性只读。
  • responseXML:将响应信息格式化为XML Document对象返回,属性只读。

4、操作http头信息相关的属性。

  • getAllResourceHeaders:获取相应的全部http头信息。语法:headers = xhr.getAllResourceHeaders();
  • getResourceHeader:从响应信息中获取指定的http头信息。 语法:head =xhr.getResourceHeader("header-name");
  • setRequestHeader:单独设定请求的某个头。

三、实例

步骤如下:

(1)创建XMLHttpRequest对象;
(2)初始化XMLHttpRequest对象,设置发送请求参数:采用GET或者POST,以及是否采用异步方式。
(3)设置XMLHttpRequest状态改变时的事件处理函数。
(4)发送请求,如采用POST方法发送请求,可以发送带参数的请求,GET方式不可以。

function Getjson()
{
  var str = "NKXZPJ.ashx";
  var xhr = makexhr();   //(1)
  xhr.open("Post", str, true);  //(2)
  xhr.onreadystatechange = function ()   //(3)
  {
    if (xhr.readyState == 4 && xhr.status == 200)
    {
      var res = xhr.responseText;
      return res;
    }
  }
  xhr.send(null);  //(4)
}
//xhr 创建 XMLHttpRequest 对象
function makexhr()
{
  var xhr1;
  try
  {
    if (window.XMLHttpRequest)  //高版本浏览器
      xhr1 = new XMLHttpRequest();
    else if (window.ActiveXobject)  //针对低版本浏览器
      xhr1 = new ActiveXobject("Microsoft.XMLHTTP");
    return xhr1;
  }
  catch (e)
  {
    alert("你的浏览器无法创建XMLHttpRequest对象!");
  }
}

AJAX——XMLHttpRequest对象的使用的更多相关文章

  1. 【02】AJAX XMLHttpRequest对象

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

  2. 不同浏览器创建 ajax XMLHTTPRequest对象的方法及兼容性问题总结

    XMLHttpRequest 对象是AJAX功能的核心,要开发AJAX程序必须从了解XMLHttpRequest 对象开始. 了解XMLHttpRequest 对象就先从创建XMLHttpReques ...

  3. 原生Ajax XMLHttpRequest对象

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

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

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

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

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

  6. AJAX——核心XMLHttpRequest对象

    AJAX大家已经都知道了,是为了实现异步通讯,提高用户体验度,而将很多旧知识(XML,DOM,JavaScript,HTML,Jquery,Css……)重新融合的一个新的知识框架.而,XMLHttpR ...

  7. AJAX原理及XMLHttpRequest对象分析

    今天的主题是前端都了解的AJAX,但其中都有哪些知识点,还需要深入分析. 首先揭示AJAX的字面意思,Asynchronous Javascript And XML,通俗点就是“异步Javascrip ...

  8. Ajax中的XMLHttpRequest对象详解

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

  9. XMLHttpRequest对象进行Ajax操作

    XMLHttpRequest 对象的三个常用的属性: 1. onreadystatechange 属性  onreadystatechange 属性存有处理服务器响应的函数. 请求状态改变的事件触发器 ...

随机推荐

  1. JAVA8新特性——接口定义增强

    JAVA9都要出来了,JAVA8新特性都没搞清楚,是不是有点掉队哦~ 接口定义增强 在JDK1.8以前,接口是定义的: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法 ...

  2. UOJ222 【NOI2016】区间

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  3. Java编程思想 Random(47)

    Random类包含两个构造方法,下面依次进行介绍:1. public Random()该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象.2. ...

  4. c3p0 数据库连接池相关知识

    c3p0数据库连接池的配置文件放在eclipse的src目录下,代码就可以识别. c3p0的配置文件的内容如下: <!-- Uncomment and set any of the option ...

  5. MVP实战心得—封装Retrofit2.0+RxAndroid+RxBus

    响应式编程框架,rxjava的扩展,很爽的链式编程 魅力在于对数据的处理,与线程切换的灵活性. 用来处理异步操作(Lambda表达式不会用.用Lambda表达式代码会更少,但不会的人会看不懂代码.不是 ...

  6. JSON 在JavaScript 中的应用及自己的理解

    [对象和json]JSON:JavaScript 对象表示法(JavaScript Object Notation).JSON 是存储和交换文本信息的语法.类似 XML.JSON是一种数据格式,不是一 ...

  7. 第六次scrum meeting记录

    文章负责:刘斯盾 日期:2017年10月30日 会议地点:新主楼F座二楼 各组员工作情况 团队成员 昨日完成任务 明日要完成任务 赵晓宇 评分界面搭建 issue17 课程列表页面搭建 issue20 ...

  8. gradle_学习_02_gradle多模块构建实例

    一.前言 二.多模块构建 1.工程结构 父工程:weixin-service 子模块:weixin-gz weixin-qy 2.父工程 weixin-service (1)build.gradle ...

  9. Nhibernate系列学习之(二) 简单增删改查

    实例中解决方案简单的创建三层架构,符合开发过程中最简单的运用: 1:首先在数据库中创建一个表T_School,脚本如下: USE [TestDb] GO /****** 对象: Table [dbo] ...

  10. ASP.NET MVC架构模式

    一.是什么? MVC,即(Model-View-Controller,模型—视图—控制器模式),和三层类似,用于表示一种软件架构模式.在这种模式下,将系统的实现分为模型Model,视图View,控制器 ...