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 属性存有处理服务器响应的函数. 请求状态改变的事件触发器 ...
随机推荐
- Oralce查询后修改数据,弹窗报提示these query result are not updateable,include the ROWID to get updateable
select t.*, (select a.ANNEXNAME from base_annex a where a.id = t.closeFile) closeFileName, (select a ...
- 打包的时候遇上找不到dll文件错误
1.保证dll文件和EXE文件处于同级目录下 我是在EXE同级文件目录下建立了一个Plugins文件并把dll文件夹放在这里面 2.但是因为建立的目录是x86_64,所以如果打包成windows平台选 ...
- 定义类+类实例化+属性+构造函数+匿名类型var+堆与栈+GC回收机制+值类型与引用类型
为了让编程更加清晰,把程序中的功能进行模块化划分,每个模块提供特定的功能,而且每个模块都是孤立的,这种模块化编程提供了非常大的多样性,大大增加了重用代码的机会. 面向对象编程也叫做OOP编程 简单来说 ...
- 机器学习(四)—逻辑回归LR
逻辑回归常见问题:https://www.cnblogs.com/ModifyRong/p/7739955.html 推导在笔记上,现在摘取部分要点如下: (0) LR回归是在线性回归模型的基础上,使 ...
- Redis 存储机制
Redis存储机制分成两种Snapshot和AOF.无论是那种机制,Redis都是将数据存储在内存中. Snapshot工作原理: 是将数据先存储在内存,然后当数据累计达到某些设定的伐值的时候,就会触 ...
- Memcache笔记(1)
缓存主要分为:页面缓存和数据缓存 Memcache .redis.mongodb都是做数据缓存的 Memcache是什么? 是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的ha ...
- ROC曲线是通过样本点分类概率画出的 例如某一个sample预测为1概率为0.6 预测为0概率0.4这样画出来,此外如果曲线不是特别平滑的话,那么很可能存在过拟合的情况
ROC和AUC介绍以及如何计算AUC from:http://alexkong.net/2013/06/introduction-to-auc-and-roc/ ROC(Receiver Operat ...
- NodeJs学习之API篇
学习nodeJS的API在对于使用nodeJS来进行编程的是十分重要的,所以首先就要去学习看看,相关的node的模块,来看一看相关的内容和可用性. 正文篇: nodeJS的API学习之路.(这里我们将 ...
- ionic2——环境配置篇
环境配置 安装nodeJS 配置cnpm 安装ionic2 安装cordova 安装java sdk 安装android sdk(在项目最后打包时app的时候会用到,前期是在浏览器环境测试开发暂时不需 ...
- Chrome Adobe flash player已过期怎么办
越来越多的朋友感受到了来自谷歌chrome新版浏览器的压力,因为有不少朋友在使用新版chrome浏览器看视频时,却出现了这样的提示:Adobe flash player已过期!怎么办啊? 有网友抱怨: ...