jQuery源码分析-15AJAX-类型转换器

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 19:01 点击:

<!--[if !supportLists]-->15.5        <!--[endif]-->AJAX中的类型转换器
前置过滤器、 请求分发器、类型转换器是读懂jQuery AJAX实现的关键,可能最难读的又是类型转换器。除此之外的源码虽然同样的让人纠结,但相较而言并不算复杂。
类型转换器将服务端响应的responseText或responseXML,转换为请求时指定的数据类型dataType,如果没有指定类型就依据响应头Content-Type自动猜测一个。在分析转换过程之前,很有必要先看看类型转换器的初始化过程,看看支持哪些类型之间的转换。
<!--[if !supportLists]-->15.5.1  <!--[endif]-->类型转换器的初始化
类型转换器ajaxConvert在服务端响应成功后,对定义在jQuery. ajaxSettings中的converters进行遍历,找到与数据类型相匹配的转换函数,并执行。我们先看看converters的初始化过程,对类型类型转换器的功能有个初步的认识。jQuery. ajaxSettings定义了所有AJAX请求的默认参数,我们暂时先忽略其他属性、方法的定义和实现:
jQuery.extend({
    // some code ...
    // ajax请求的默认参数
    ajaxSettings: {
       // some code ...
 
       // List of data converters
       // 1) key format is "source_type destination_type" (a single space in-between)
       // 2) the catchall symbol "*" can be used for source_type
       // 类型转换映射,key格式为单个空格分割的字符串:源格式 目标格式
       converters: {
 
           // Convert anything to text、
           // 任意内容转换为字符串
           // window.String 将会在min文件中被压缩为 a.String
           "* text": window.String,
 
           // Text to html (true = no transformation)
           // 文本转换为HTML(true表示不需要转换,直接返回)
           "text html": true,
 
           // Evaluate text as a json expression
           // 文本转换为JSON
           "text json": jQuery.parseJSON,
 
           // Parse text as xml
           // 文本转换为XML
           "text xml": jQuery.parseXML
       }
    }
    // some code ...
});
然后在jQuery初始化过程中,对jQuery. ajaxSettings.converters做了扩展,增加了text>script的转换:
// Install script dataType
// 初始化script对应的数据类型
// MARK:AJAX模块初始化
jQuery.ajaxSetup({
    accepts: {
       script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
    },
    contents: {
       script: /javascript|ecmascript/
    },
    // 初始化类型转换器,这个为什么不写在jQuery.ajaxSettings中而要用扩展的方式添加呢?
    // 这个转换器是用来出特殊处理JSONP请求的,显然,jQuery的作者John Resig,时时刻刻都认为JSONP和跨域要特殊处理!
    converters: {
       "text script": function( text ) {
&nb

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Gb2312转utf-8编码的方法(vbs+js)
    • 如何使用Ajax技术开发Web应用程序(1)
    • js跳转路径问题
    • JavaScript模仿桌面窗口
    • 用js检测两个线段是否相交
    • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
    • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
    • 我是如何去了解jquery的(六),案例之幻灯片轮换
    • Jquery封装幻灯片效果
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1