AJAX——XMLHttpRequest对象的使用
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对象的使用的更多相关文章
- 【02】AJAX XMLHttpRequest对象
AJAX XMLHttpRequest对象 XMLHttpRequest 对象用于与服务器交换数据,能够在不重新加载整个网页(刷新)的情况下,对网页进行部分更新. XMLHttpRequest 对 ...
- 不同浏览器创建 ajax XMLHTTPRequest对象的方法及兼容性问题总结
XMLHttpRequest 对象是AJAX功能的核心,要开发AJAX程序必须从了解XMLHttpRequest 对象开始. 了解XMLHttpRequest 对象就先从创建XMLHttpReques ...
- 原生Ajax XMLHttpRequest对象
一.Ajax请求 - 现在常见的前后端分离项目中,一般都是服务器返回静态页面后浏览器加载完页面,运行script中的js代码,通过ajax向后端api发送异步请求获取数据,然后调用回调函数,将数据添加 ...
- 【转载并整理】AJAX XmlHttpRequest对象详解
一. XMLHttpRequest由来及原生介绍 XMLHttpRequest(XHR)是一个API对象,其中的方法可以用来在浏览器和服务器端传输数据.这个对象是浏览器的js环境提供的.从XHR获取数 ...
- Ajax XMLHttpRequest对象的三个属性以及open和send方法
(1)onreadystatechange 属性onreadystatechange 属性存有处理服务器响应的函数.下面的代码定义一个空的函数,可同时对 onreadystatechange 属性进行 ...
- AJAX——核心XMLHttpRequest对象
AJAX大家已经都知道了,是为了实现异步通讯,提高用户体验度,而将很多旧知识(XML,DOM,JavaScript,HTML,Jquery,Css……)重新融合的一个新的知识框架.而,XMLHttpR ...
- AJAX原理及XMLHttpRequest对象分析
今天的主题是前端都了解的AJAX,但其中都有哪些知识点,还需要深入分析. 首先揭示AJAX的字面意思,Asynchronous Javascript And XML,通俗点就是“异步Javascrip ...
- Ajax中的XMLHttpRequest对象详解
XMLHttpRequest对象是Ajax技术的核心.在Internet Explorer 5中,XMLHttpRequest对象以ActiveX对象引入,被称之为XMLHTTP,它是一种支持异步请求 ...
- XMLHttpRequest对象进行Ajax操作
XMLHttpRequest 对象的三个常用的属性: 1. onreadystatechange 属性 onreadystatechange 属性存有处理服务器响应的函数. 请求状态改变的事件触发器 ...
随机推荐
- 主席树----POJ 2104(主席树裸题)(转)
首先来介绍一下我们需求:给你n个数,多次问你某个区间内的第k小是哪个数 主席树: 主席树的全名应该是 函数式版本的线段树.加上附带的一堆 technology.. ..总之由于原名字太长了,而且 “主 ...
- C#将字符转换成utf8编码 GB321编码转换
public static string get_uft8(string unicodeString) { UTF8Encoding utf8 = new UTF8Encoding(); Byte[] ...
- linux下 stat statfs 获取 文件 磁盘 信息
stat函数讲解 表头文件: #include <sys/stat.h> #include <unistd.h> 定义函数: int st ...
- .net如何解析二维码图片
二维码现在越来越流行,可以使用手机上或其它移动终端上的二维码扫描器软件对着二维码一扫,就可以得到相关信息.在互联网站上,可以找到很多二维码的工具,甚至还有不少在线生成.解析二维码的网站.在业务系统当中 ...
- java: Comparable比较器,定义二叉操作类
//定义二叉操作类 class BinaryTree{ class Node{ private Node left; //左指数 private Node right; //右指数 private C ...
- selenium对富文本框的处理
一般输入框有以下几种形式 第一种:短的input框 如百度首页的输入框,<input type="text" class="s_ipt" name=&qu ...
- 解决:phantomjs helloworld.js报错: Can't open 'helloworld.js'
PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引.它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG. 当我安装好PhantomJS后,写下第 ...
- Android中如何禁止音量调节至静音
Android中音量按键在调低音量时,如果一直按住Down按钮不放,则系统将音量跳到最小后,又自动调节到静音状态.这个机制和iPhone是不同的,iPhone中无论你怎么按Volume-按钮,只能调到 ...
- BW ON HANA 业务模型关系与数据取数
在接到业务需求之后,我认为重要的是理清楚自己该做什么.来实现业务.由于不了解业务,还是走了很多弯路.本可以不用这么做,还是这么做了.自然你最傻瓜的按照用户的方式去实现是没有问题的. 会使后面的人难以维 ...
- URL OpenDocument
以前用在DASHBOARD 使用URL传参 到webi 报表.还是很多不理解,现在明白多了.于是做个较为详细的记录.尽管dashboard 很快就被淘汰了.也许没什么用.看看也好. 之前的报表,传参都 ...