XMLHttpRequest 对象的创建
/* XMLHttpRequest 对象构造器 */
function CallBackObject() {
this.XmlHttp = this.GetHttpObject();
}
/* 取得 XMLHttpRequest 对象 */
CallBackObject.prototype.GetHttpObject = function() {
var xmlhttp;
/* 浏览器判断,不同的浏览器、浏览器版本 XMLHttpRequest 对象的创建方式是不同的 */
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end
@*/
if(!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch(e) {
xmlhttp = false;
}
}
return xmlhttp;
}
/**
* Ajax 回调方法
*
* @param {Object} URL 传入要访问的URL地址作为参数
*/
CallBackObject.prototype.DoCallBack = function(URL) {
if(this.XmlHttp){
if(this.XmlHttp.readyState == 4 || this.XmlHttp.readyState == 0) {
var oThis = this;
this.XmlHttp.open('POST', URL);
this.XmlHttp.onreadystatechange = function() {
oThis.ReadyStateChange();
};
this.XmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
this.XmlHttp.send(null);
}
}
}
CallBackObject.prototype.AbortCallBack = function() {
if(this.XmlHttp) {
this.XmlHttp.abort();
}
}
CallBackObject.prototype.OnLoading = function() {
//Loading
}
CallBackObject.prototype.OnLoaded = function() {
//Loaded
}
CallBackObject.prototype.OnInteractive = function() {
//Interactive
}
CallBackObject.prototype.OnComplete = function(responseText, responseXML) {
//Complete
}
CallBackObject.prototype.OnAbort = function() {
//Abort
}
CallBackObject.prototype.OnError = function(status, statusText) {
//Error
}
/**
* XMLHttpRequest.readyState
* 0, 请求未初始化(还没有调用XMLHttpRequest对象的open方法)
* 1, 请求已经建立,但是还没有发送(还没有调用XMLHttpRequest对象的send方法)
* 2, 请求已发送,正在处理中
* 3, 请求在处理中,通常响应中已有部分数据可用,但是服务器还咩有完成响应的生成
* 4, 请求成功完成,可以获取并且使用服务器的响应
*/
CallBackObject.prototype.ReadyStateChange = function() {
if(this.XmlHttp.readyState == 1){
this.OnLoading();
} else if (this.XmlHttp.readyState == 2){
this.OnLoaded();
} else if (this.XmlHttp.readyState == 3){
this.OnInteractive();
} else if (this.XmlHttp.readyState == 4) {
if(this.XmlHttp.status == 0) {
//服务器端无任何相应,执行忽略操作
this.OnAbort();
} else if (this.XmlHttp.status == 200 && this.XmlHttp.statusText == "OK") {
//请求一切正常,对GET和POST请求的应答文档跟在后面
this.OnComplete(this.XmlHttp.responseText, this.XmlHttp.responseXML);
} else {
//错误处理
this.OnError(this.XmlHttp.status, this.XmlHttp.statusText, this.XmlHttp.responseText);
}
}
}
XMLHttpRequest 对象的使用的简单示例
使用XMLHttpRequest对象向服务器端发送请求的基本流程可以分为5步:
- 从Web表单中获取需要的数据
- 建立要连接的URL
- 打开到服务器的连接
- 设置服务器在完成后要运行的函数
- 发送请求
function callServer() {
//从Web表单中获取数据
var id = document.getElementById("id").value;
var name = document.getElementById("name").value;
//只有在数据不为空时才发出请求
if(id == null || id == "") return;
if(name == null || name == "") return;
//请求的URL
/**
* escape()函数进行编码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,而且使用此种方案还可以避免中文乱码的出现。
* 当使用escape()编码后,在取出值以后需要使用unescape()进行解码才能得到原来的值。
*/
var url = "logon.jsp?id=" + escape(id) + "" + escape(name);
//访问服务器,打开连接
xmlHttp.open("GET", url, true);
//设置请求完成时的相应函数
xmlHttp.onreadystatechange = updatePage;
//发送请求
xmlHttp.send(null);
}
/* 处理HTTP响应 */
function updatePage() {
if(xmlHttp.readyState == 4) {
var response = xmlHttp.responseText; //HTTP请求返回的文本内容
document.getElementById("duty").value = response;
}
}
分享到:
相关推荐
为了更好地封装和管理XMLHttpRequest对象的操作,可以创建一个名为ServerAccessObject的模块。该模块应该包括以下功能: - **初始化XMLHttpRequest对象**。 - **发送请求**。 - **处理响应**。 - **错误处理**。 ...
### 创建XMLHttpRequest对象 在现代Web开发中,异步JavaScript和XML(通常称为AJAX)是一种重要的技术,它允许网页在不重新加载整个页面的情况下与服务器进行数据交换。这一过程的核心在于`XMLHttpRequest`对象的...
在VS2008中,开发者可以直接使用AJAX控件,它们封装了XMLHttpRequest对象的复杂操作,简化了开发流程。例如,UpdatePanel控件背后的实现就是基于XMLHttpRequest对象的,它自动处理了请求和响应的处理逻辑,使得...
XMLHttpRequest对象是Ajax技术的核心,它允许Web应用程序在不刷新整个页面的情况下与服务器进行异步数据交换,从而实现页面的局部更新。这个对象在不同浏览器中的实现方式有所不同,最初由IE5作为ActiveX组件引入,...
XMLHttpRequest对象是AJAX(异步JavaScript和XML)技术的核心,它允许Web应用程序在不刷新整个页面的情况下与服务器进行数据交换,从而实现更加流畅和互动的用户体验。在现代浏览器中,无论是在JavaScript、Jscript...
XMLHttpRequest 对象封装 在MS的Ajax库中,XMLHttpRequest对象被封装为`Sys.Net.XMLHttpExecutor`类。这个类提供了一个更友好的接口,使得开发者可以更容易地发送异步请求。例如,你可以创建一个`XmlHttpExecutor`...
首先,`CallBackObject`构造函数初始化了一个`XmlHttp`属性,这是XMLHttpRequest对象的实例。在`GetHttpObject`方法中,代码通过条件语句实现了浏览器兼容性检查,创建了XMLHttpRequest对象。对于较旧的IE浏览器,它...
XMLHttpRequest对象是JavaScript中用于实现异步HTTP请求的关键工具,它允许前端与服务器进行通信而无需刷新整个网页。在Web开发中,它被广泛应用于AJAX(Asynchronous JavaScript and XML)技术,实现实时更新页面...
在ASP.NET AJAX中,通常会使用`Sys.Net.XMLHttpExecutor`类来封装XMLHttpRequest对象的操作。这个类提供了`executeRequest`方法,用于发送异步请求,并且在完成时触发回调函数,此时`ResponseXML`和`ResponseText`...
其中客户的XMLHttpRequest对象的封装,就足以让人大饱眼福,在一般的浏览器其都能够运行AJAX。下面我们来学习学习这个咚咚,希望能给更多的人带来帮助。 首先当然是要了解一下浏览器中的XMLHttp对象了: XMLHTTP方法...
XMLHttpRequest对象是浏览器内置的一个API,它提供了在后台与服务器进行通信的能力。通过创建XMLHttpRequest实例,我们可以发送HTTP请求并接收响应,这在AJAX(Asynchronous JavaScript and XML)应用中尤为常见。...
- `MicrosoftAjax.debug.js`和`MicrosoftAjax.js`:这是主Ajax库,包含了核心的客户端脚本组件,如数据类型、数组扩展、日期和时间处理、XMLHttpRequest对象封装等。`debug.js`版本是为了方便调试,包含了额外的诊断...
XMLHttpRequest对象是Ajax技术的核心,它使得JavaScript可以与服务器进行异步数据交换,无需刷新整个网页。这个对象允许客户端向服务器发送HTTP请求,并接收服务器的响应,从而实现了局部刷新的效果,提高了用户体验...
为了简化代码和提高可维护性,你可以将创建XMLHttpRequest对象的过程封装到一个单独的函数中,如`CreateHTTPObject()`所示: ```javascript function CreateHTTPObject() { var xmlhttp; try { xmlhttp = new ...
本篇文章将详细解析获取XMLHttpRequest对象的三种常见方法。 1. **创建XMLHttpRequest对象的原始方式** 在早期的浏览器实现中,XMLHttpRequest对象的创建方式因浏览器内核不同而有所差异。对于基于Gecko内核(如...
尽管jQuery对原生的XMLHttpRequest对象进行了封装,但有时候开发者可能需要直接访问原生的xhr对象,以便调用一些原生对象才有的属性或方法。 在使用jQuery的$.ajax方法进行数据交互时,通常可以不需要关心底层的...
XMLHttpRequest对象是AJAX(Asynchronous JavaScript and XML)的核心,尽管它的名字中包含XML,但实际上它可以处理各种类型的数据格式,如JSON、文本或二进制流。xhr对象具有多个属性和方法,如`open()`、`send()`...
封装类中首先尝试创建XMLHttpRequest对象,这个对象是进行AJAX操作的关键。在创建过程中,根据浏览器是否支持ActiveXObject来决定创建方式。如果浏览器是IE,则尝试创建Msxml2.XMLHTTP或Microsoft.XMLHTTP对象;如果...
GWT提供了对XHR的封装,使得开发者可以方便地使用JavaScript的XMLHttpRequest对象,而无需直接接触底层的JavaScript代码。在《GWT揭秘》一书的8.1节中,详细讲解了如何在GWT中使用XMLHttpRequest来请求动态数据。本...