`
yuzihan607
  • 浏览: 21533 次
  • 性别: Icon_minigender_1
  • 来自: 雅安
社区版块
存档分类
最新评论

dojo入门3_XHR对象

    博客分类:
  • dojo
 
阅读更多
传统的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.GUI_v6.zip for pencil

    【Dojo.GUI_v6.zip for pencil】是一款专为Pencil设计的GUI模板资源包,它扩展了Pencil这款优秀的Web原型设计工具的功能和视觉元素。Pencil是一个免费且开源的应用程序,允许用户创建各种交互式原型,适用于网页、...

    dojo学习001_20101122

    dojo学习001_20101122.dojo学习文件

    使用_Dojo_的_Ajax_应用开发进阶教程

    ### 使用_Dojo_的_Ajax_应用开发进阶教程 #### JavaScript高级特性详解 随着Ajax技术的广泛应用,JavaScript作为客户端脚本语言的核心地位越发凸显。本文深入探讨了JavaScript中的几个重要概念,帮助开发者更好地...

    DOJO_API_中文参考手册.pdf

    DOJO_API_中文参考手册.pdf 看看就知道 看看就知道

    dojo_part001_001_001

    dojo_part001_001_001dojo_part001_001_001dojo_part001_001_001

    图书:Dojo入门

    《Dojo入门》这本书主要介绍了Dojo JavaScript库的使用,帮助初学者快速掌握这个强大的前端开发工具。Dojo是一个开源的JavaScript框架,旨在提供一站式的解决方案,包括UI组件、数据管理、动画效果、Ajax交互等功能...

    Dojo-China.zip_chinadojo1688_dojo_dojo 实战_dojo中文网

    3. **dojo/dom**: 提供了操作HTML元素的函数,如获取、创建、修改元素等,是Dojo进行DOM操作的基础。 4. **dojo/AJAX**: Dojo提供了异步数据交互的接口,如dojo/xhrGet和dojo/xhrPost,可以方便地实现与服务器的...

    dojo_part003_003_003

    dojo_part003_003_003dojo_part003_003_003dojo_part003_003_003

    DOJO_API_中文参考手册 附加注释实例

    3. Dojo、Dijit和DojoX的包和功能: - Dojo核心功能包提供了Dojo的基础功能。 - Dijit包存放了所有Dojo的Widget组件。 - DojoX包则包含一些扩展功能和试验性质的功能,这些功能在成熟后可能会被整合到Dojo或Dijit...

    dojo_ajax_support

    ### Dojo Toolkit与Ajax支持详解 #### 一、概述 **Dojo** 是一个功能强大的JavaScript库,旨在简化客户端Web应用程序的开发。它提供了一系列工具和技术来帮助开发者创建高性能、可扩展的应用程序。其中,Dojo对...

    使用_Dojo_Mobile_为_iOS_智能终端开发_Native-like_Web_应用

    Dojo Mobile是Dojo框架的一个组件,它提供了一套丰富的组件库(称为小部件),这些小部件能够帮助开发者快速构建出类似原生应用的界面和交互效果。Dojo Mobile适合于创建轻量级且高性能的移动Web应用,它封装了许多...

    Dojo中文手册_IT168文库.pdf

    3. 拖放操作(Drag and Drop):Dojo通过内置的拖放API支持拖放功能,使得在Web应用中实现拖放操作变得简单。 4. XML和Ajax支持:Dojo不仅封装了XMLHttpRequest对象,还提供了 dojo.io.bind() 方法来实现Ajax远程...

    Dojo 入门 + Dojo 工具包系列 + Dojo 使用技巧 ......

    在使用Dojo进行Ajax通信时,Dojo的`dojo.xhr`模块提供了与服务器端进行异步数据交换的接口。它可以处理各种HTTP请求类型,如GET、POST、PUT和DELETE,支持JSON、XML等多种数据格式,为开发者提供了统一的API。 Dojo...

    dojo入门实例介绍

    Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,包括DOM操作、事件处理、动画效果、模块管理以及数据存储等。本文将通过一系列实例,帮助初学者快速掌握Dojo的核心概念和使用方法。 首先...

    Srs.rar_dojo1.2 servlet_srs

    用最近的dojo1.2.1制作前端的ajax购书网站,分注册用户购物和非注册用户购物两部分(其实非注册用户只是个噱头),一个页面完成所有必要功能,页面颜色有点难看,管理员部分没有做。后端为servlet+ms sqlserver2k,...

Global site tag (gtag.js) - Google Analytics