传统的ajax使用javascript的话是非常麻烦的,还需要考虑到各个浏览器的不同,而使用dojo便可以帮我们屏蔽这一差异,它会根据不同的浏览器创建相适应的XmlHttpRequest对象(以后简称XHR),创建原始XHR对象的代码是
function createXHR(){
if (window.XMLHttpRequest) { // Non IE
return new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IE
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
XHR 对象创建方式不一致是 Dojo 的 XHR 框架诞生的一个原因,更重要的原因是原始 XHR 对象还不够强大,有些方面不能满足开发的需要:首先 XHR 对象支持的返回类型有限,原始 XHR 对象只有 responseText 和 responseXML 两个属性代表返回的数据,重要的数据交换格式 JSON 就不被支持;其次不能设置 HTTP Request 的超时时间,设置超时时间可以让客户端脚本控制请求存在的时间,而不是被动的等待服务器端的返回。
由于这些问题的存在,dojo组织了一系列的函数来支持不同的Http请求,如xhrGet,rawXhrPost,xhrPut,rawXhrPut,xhrPut,xhrDelete,这几个函数与 HTTP 协议中的四种请求是一一对应的,HTTP 四种请求是:Get(读取),Post(更新),Put(创建),Delete(删除),这些跟XHR对象相关的函数组织在一起就形成了XHR框架,一下是dojo创建XHR对象的片段
d._XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];
d._xhrObj= function(){
var http = null;
var last_e = null;
if(!dojo.isIE || !djConfig.ieForceActiveXXhr){
try{ http = new XMLHttpRequest(); }catch(e){}
}
if(!http){
for(var i=0; i<3; ++i){
var progid = dojo._XMLHTTP_PROGIDS[i];
try{
http = new ActiveXObject(progid);
}catch(e){
last_e = e;
}
if(http){
dojo._XMLHTTP_PROGIDS = [progid];
break;
}
}
}
if(!http){
throw new Error("XMLHTTP not available: "+last_e);
}
return http; // XMLHTTPRequest instance
}
大家可以看到,里面有很多的try catch语句,是为了保证在创建XHR对象的时候,即使出错,浏览器也不会崩溃,这样的XHR对象是不是更强大了呢
分享到:
相关推荐
使用_Dojo_的_Ajax_应用开发进阶教程
dojo学习001_20101122.dojo学习文件
dojo_part003_003_003dojo_part003_003_003dojo_part003_003_003
pencil非常好用的web原型设计工具,这个是DOJO GUI的模板
DOJO_API_中文参考手册 附加注释实例 特别适合初学者使用,学习Dojo 必备
DOJO_API_中文参考手册.pdf 看看就知道 看看就知道
Dojo中文手册_IT168文库,非常详细的DOJO组件讲解,AJAX使用
dojo_part001_001_001dojo_part001_001_001dojo_part001_001_001
dojo_part003_003_003dojo_part003_003_003dojo_part003_003_003
对arcgis for js API的离线部署进行简单配置描述,涉及AMD规范的定义与讲解,其中也提到了安装postgress数据库的基本步骤,对想发布地图服务和处理数据有所帮助
Dojo Mobile 是基于 Dojo 的小部件集合,用于创建移动 Web 应用程序。使用 Dojo Mobile,您可以开发轻量级、高性能的移动 Web 应用程序
dojo的ajax支持,可以作为参考手册,不过是英文版的。
Dojo中文手册——实战dojo工具包。一个品质远远超出“原型建造”的Ajax库。
用最近的dojo1.2.1制作前端的ajax购书网站,分注册用户购物和非注册用户购物两部分(其实非注册用户只是个噱头),一个页面完成所有必要功能,页面颜色有点难看,管理员部分没有做。后端为servlet+ms sqlserver2k,...
dojo入门系列教程,包含入门简介,在javascript基础上介绍dojo的语法特色,ajax的dojo包装---xhr框架的编程要点, Dojo 事件机制.以及对dojo最具特色的web UI设计的全面介绍.
文章用几个简单的实例,让初学者了解dojo的相关知识,和如何使用dojo的相关知识.