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 属性存有处理服务器响应的函数. 请求状态改变的事件触发器 ...
随机推荐
- openssl——初了解
Openssl OpenSSL是一个开源的.用于SSL/TLS协议的加密工具,是互联网加密传输的核心基础组件,由加拿大的Eric Yang等发起编写的,当前互联网安全传输的大部分场景(如HTTPS)均 ...
- ubuntu/centos printk 终端中不能打印信息及解决办法
今天用ubuntu来调试信息,printk死活打印不出信息,即使把级别跳到<0>,即KERN_ALERT也不行,后再搜了好长时间网络, 这个地址:http://bbs.chinaunix. ...
- 微信小程序申请。很蛋疼的流程。
微信小程序申请. 营业执照,食品许可证,身份证正面,身份证反面. 1.先要申请服务号. 需要一个QQ邮箱,申请服务号. 填写各种信息,营业执照信息. 法人信息. 管理员用自己人的.方便开发操作. 申请 ...
- Keystone集成LDAP
转自 http://wsfdl.com/openstack/2016/01/13/Keystone%E9%9B%86%E6%88%90LDAP.html 得益于 Keystone 优良的架构,它允许 ...
- (转)理解Keystone的四种Token
Token 是什么 通俗的讲,token 是用户的一种凭证,需拿正确的用户名/密码向 Keystone 申请才能得到.如果用户每次都采用用户名/密码访问 OpenStack API,容易泄露用户信息, ...
- Mac上的抓包工具Charles[转载]
今天就来看一下Mac上如何进行抓包,之前有一篇文章介绍了使用Fidder进行抓包 http://blog.csdn.net/jiangwei0910410003/article/details/198 ...
- andriod sdk 模拟器的安装以及root
安卓模拟器常用的一共2种java sdk 和 bluestacks 蓝手指.前者比较卡,后者貌似不能模拟2g/3g上网. 本文主要是针对java sdk的安装使用,以及root.关于root的意思 ...
- MySQL InnoDB与MyISAM存储引擎差异
言: 之前简单介绍过 MySQL 常用的存储引擎,今天对两个主流的存储简单分析下差异,书上没有参考的笔试题解答注解: 差异: MyISAM 只支持表锁,不支持事务,表损坏率较高.较老的存储引擎. ...
- 剑指offer--16.数组中重复的数字
时间限制:1秒 空间限制:32768K 热度指数:198342 本题知识点: 数组 题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复 ...
- golang的项目结构 相关知识
### 项目结构 ``` ├── bin │ ├── login │ └── main ├── pkg │ └── darwin_amd64 │ └── login │ └── a ...