摘自<<精通javascript>>
XML:所有的浏览器都支持原生XML的文档处理,自动将它们转换为可用的DOM文档。
HTML:和XML文档的区别在于,它通常以纯文本字符串的形式存在,存放一个HTML片段
Javscript/Json:这包括两种格式--原始的可执行的javascript代码和Json(javascript object Notation,Javascript对象表示)格式。
获取HTTP响应数据的重点是XMLHTTPRequest对象的两个属性
responseXML:如果服务器返回的是XML文档,这个属性包含到预处理后DOM文档的引用,它是XML文档的表达。只在服务器明确指定其内容首部(content header)是"content-
type:text/xml"或类似XML的数据类型时才有效。
responseText:这一属性包含到服务器返回的原始文本数据的引用。HTML和Javascript类型的数据都依赖这一方法来获得。
/**
*处理错误:
*1、成功响应代码:通过读取代码,客户端能够知道服务器的情形。状太码在200-300之间属于成功的请求
*2、未修改响应:'Not Modified(未修改)'的标记,也就是状态码304。说明返回的数据与浏览器的
* 缓存内容一致,并未修改过。其实不算错误,因为客户端仍能读出正确的数据
*3、本地存储的文件:在本机上直接执行Ajax应用程序,不通过web服务器,就算请求成功了,也不
* 会得到任何返回的状态码。执行本地文件且得不到状态码时,算成功响应
*4、Safari与未修改状态:文档处上次请求未曾修改过,Safari返回的状太码会是'undefined'
*/
if(typeof XMLHttpRequest == 'undefined')
XMLHttpRequest = function(){
return new ActiveObject(navigator.userAgent.indexOf("MSIE 5")>=0?"Microsoft.XMLHTTP":"Msxml2.XMLHTTP");
};
function ajax(options){
//执行Ajax 请求的通用函数
//如果用户没有提供某个选项的值,就用默认值替代
options={
//HTTP请求类型
type:options.type||"POST",
//请求的URL
url:options.url || "",
//请求超时的时间
timeout:options.timeout ||5000,
//请求失败、成功或完成(不管成功还是失败都会调用的)时执行的函数
onComplete:options.onComplete || function(){},
onFail:options.onFail || function(){},
onSuccess:options.onSuccess || function(){},
//服务器将会返回的数据类型,这一默认值用于判断服务器返回的数据并作相应动作
data:options.data || ""
};
//创建请求对象
//var xml = new XMLHttpRequest();
var xml=createXMLHttpRequest();
//初始化异步请求
xml.open(options.type,options.url,true);
//在请求后等待5秒,超时同放弃
var timeoutLength=options.timeout;
//记录请求是否成功完成
var requestDone = false;
//初始化一个5秒执行的回调函数,用于取消请求(如果尚未完成的话)
setTimeout(function(){
requestDone=true;
},timeoutLength);
//监听文档状态的更新
xml.onreadystatuschange = function(){
//保持等待,直到数据完全加载,并保证请求并未超时
if(xml.readyState == 4 && !requestDone){
//检查是否请求成功
if(httpSuccess(xml)){
//以服务器返回的数据作为参数调用成功回函数
options.onSuccess(httpData(xml,options.type));
//否则就请求失败,执行失败回调函数
}else{
options.onFail();
};
//调用完成回调函数
options.onComplete();
//为避免内存泄,清理文档
xml=null;
};
};
//建立与服务器的连接
xml.send();
//判断HTTP响应是否成功
function httpSuccess(r){
try{
//如果得不到服务器状态,且我们正在请求本文件,认为成功
return !r.status&&location.protocol=='file:'||
//所有200到300间的状态码表示成功
(r.status>=200&& r.status<300)||
//文档未修改也算成功
r.status==304||
//Safari 在文档修改时返回空状态
navigator.userAgent.indexOf('Safari')>=0&&typeof r.status =='undefined';
}catch(e){
//若检查状态失败,就假定请求是失败的
return false;
}
};
//从HTTP响应中解析正确数据
//有两个参数:一个XMLHttpRequest对象和一个可选参数----期望从服务器得到的数据类型
//正确的值包括:xml,script,text或html --默认是'',根据content-type的首部得到
function httpData(r,type){
//获取 content-type的首部
var ct = r.getResponseHeader("content-type");
//若没有提供默认的类型,判断服务器返回的否是XML形式
var data= !type && ct && ct.indexOf("xml")>=0;
//若是,获得XML文档对象,否则返回文本内容
data = type=="xml" || data?r.resonpseXML:r.responseText;
//若指定类型是"script",则以javascript形式执行返回文本
if(type=="script"){
eval.call(window,data);
};
//返回响应数据(或为XML文档或为文本字符串)
return data;
};
}
分享到:
相关推荐
Asp.Net AJAX程序包是微软为开发者提供的一种用于构建高度交互性和响应迅速的Web应用程序的框架。这个程序包的核心在于其能够实现异步更新,即在不刷新整个页面的情况下更新部分网页内容,从而提升了用户体验。AJAX...
**AJAX分页技术详解** 在网页开发中,分页是一种常见的数据展示方式,它能够有效地组织大量数据,提高用户体验。AJAX(Asynchronous JavaScript and XML)分页是结合了AJAX技术和分页概念的一种实现方式,使得用户...
这个名为"ASP AJAX ExtSetup.msi"的压缩包文件,很显然包含了与ASP.NET AJAX相关的控件和库,这是一款用于构建高效、交互性丰富的Web应用程序的工具集。ASP.NET AJAX是微软提供的一个框架,它扩展了ASP.NET的功能,...
在"AJAX程序制做学籍管理"项目中,AJAX的主要作用是提高用户体验,用户可以在不离开当前页面的情况下,实时获取和更新学籍信息。 接下来,我们来看MySQL。MySQL是一个广泛使用的开源关系型数据库管理系统,它支持...
本资源包含了ASP.NET AJAX程序设计的源码,这对学习和理解这一技术具有极大的帮助。 首先,我们要了解ASP.NET AJAX的核心组件。这包括: 1. **Microsoft AJAX Library**:这是客户端JavaScript库,提供了与服务器...
【Telerik RadControls for ASP.NET AJAX 2013 NuGet 程序包】是.NET开发者们在构建Web应用程序时经常会用到的一款强大的UI组件库。Telerik是一家知名的软件开发公司,以其高质量的开发工具而闻名,尤其在UI控件方面...
《ASP.NET.AJAX程序设计.第II卷》是一本深度探讨ASP.NET AJAX技术的专业书籍,专注于客户端的Microsoft.AJAX.Library以及异步通信层。ASP.NET AJAX是微软推出的一个强大的框架,它允许开发者在ASP.NET环境中构建高度...
Ajax控件工具包包含了一套丰富的控件,你可以用它来建立高度敏感和交互性的Ajax的Web应用程序。Ajax控件工具包包含超过40个控件,包括自动完成、CollapsiblePanel、ColorPicker中、MaskedEdit、日历、手风琴、HTML...
在大型应用程序中,AJAX 请求通常与路由和状态管理紧密关联。一些公共包可能集成了路由库(如 Vue Router 或 React Router)和状态管理库(如 Vuex 或 Redux),使得在处理 AJAX 数据时能更好地管理页面状态和导航。...
ASP.NET AJAX工具包是微软为开发者提供的一套用于构建高度交互性和响应性Web应用程序的库。这个工具包,也称为Microsoft ASP.NET AJAX Control Toolkit,旨在简化ASP.NET应用程序中的AJAX(Asynchronous JavaScript ...
通过使用这样的Ajax组件包,开发者可以更高效地构建动态、交互性强的Web应用程序,而无需深入理解底层的Ajax实现细节。这不仅节省了开发时间,也提高了应用的性能和用户体验。在Visual Studio 2005环境下,这些组件...
ASP.NET Ajax程序设计 第II卷 嘿嘿,要分多点
ASP.NET AJAX程序设计是微软开发框架中用于创建高度交互式和响应式的Web应用程序的重要技术。在I卷中,虽然我们无法获取完整的书籍内容,但我们可以深入探讨ASP.NET AJAX的一些核心概念和关键特性。 1. **AJAX...
在“ajax安装程序+jar包、dll”这个描述中,我们可以理解为包含了一个用于处理Ajax请求的软件安装程序,以及相关的Java档案(.jar)和动态链接库文件(.dll)。这些文件通常在开发或者运行基于Ajax的应用程序时会...
《jQuery效果程序包详解》 在网页开发领域,jQuery是一个不可或缺的JavaScript库,它极大地简化了DOM操作,事件处理,动画效果以及Ajax交互等任务。本文将深入探讨jQuery的效果程序包,带你了解如何利用它来实现...
压缩包中包括所有的asp.net 使用微软ajax服务器端控件所用的安装包和dll,包括:ASP.net AJAX CTP安装包(需要先安装asp.net ajax1.0),Microsoft.Web.Preview.dll,ASPAJAXExtSetup.msi(ajax1.0),扩展性内容:...
7. **全局事件和事件处理器**:jQuery提供了全局Ajax事件,如ajaxStart、ajaxStop、ajaxSuccess和ajaxError,可用于在整个应用程序中统一处理Ajax请求的状态。 8. **$.ajaxSetup()**:这个函数可以设置全局Ajax选项...
本篇文章将详细探讨Ajax的核心概念、使用场景以及与之相关的jar包。 Ajax的核心在于异步通信,它通过JavaScript创建XMLHttpRequest对象,利用这个对象与服务器进行通信,接收或发送数据。数据格式不限于XML,也可以...
【ASP版AJAX用户注册】是一个使用Active Server Pages(ASP)技术结合Ajax(Asynchronous JavaScript and XML)实现的用户注册程序。Ajax的核心在于通过JavaScript在客户端与服务器端进行异步数据交互,无需刷新整个...
总结,这个" AjAX程序实例源码 "提供了一个完整的Ajax应用范例,涵盖了从客户端JavaScript的Ajax调用,到Java后端的处理流程。通过学习和分析这个实例,开发者能够深入理解Ajax技术,并具备实现在自己的项目中运用...