• 模拟jQuery简单封装ajax


     1 /*模拟jQuery的写法 (简单写法)*/
     2 var $={};
     3 /*ajax*/
     4 $.ajax = function (options) {
     5     /*
     6     * 请求
     7     * 1.请求接口    type    get post 默认的是get 决定是否设置请求头
     8     * 2.接口地址    url     不确定 字符串 如果用户没有传  默认的接口地址为当前路径
     9     * 3.是否是异步  async    默认的就是异步 true;false 是同步请求
    10     * 4.提交数据    data    默认的是对象 {name:'XXX',age:'19'} 默认是{}
    11     *
    12     * 响应
    13     * 1.成功回调函数 success 代表的是一个函数 用来处理成功之后的业务逻辑的函数
    14     * 1.1 字符串 xml json格式的字符串 数据转换
    15     * 2.失败回调函数 error 代表的是一个函数 用来处理失败之后的业务逻辑的函数
    16     * 2.1 返回一些错误信息
    17     * */
    18 
    19 
    20 
    21 
    22     /*处理默认参数*/
    23     if(!options || typeof options != 'object') return false;
    24     /*如果没有传 使用默认的get方式提交*/
    25     var type = options.type || 'get';
    26     /*如果没有传 使用默认的当前路径*/
    27     var url = options.url || location.pathname;
    28     /*强制 是false的时候就是同步  否则都是异步*/
    29     var async = options.async === false?false:true;
    30     /*如果没有就是空对象*/
    31     var data = options.data || {};
    32     /*对象是无法进行传输 {name:'',age:''}  拼接字符串  name=xzz&age=18*/
    33     var dataStr = '';
    34     for(var key in data){
    35         dataStr+=key+'='+data[key]+'$';
    36     }
    37     dataStr = dataStr && dataStr.slice(0,-1);
    38 
    39     /*ajax封装编程*/
    40     /*初始化*/
    41     var xhr = new XMLHttpRequest();
    42     xhr.open(type,type == 'get'?url+'?'+dataStr:url,async);
    43     /*请求头*/
    44     if(type == 'post'){
    45         xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    46     }
    47     /*请求主体*/
    48     xhr.send(type=='get'?null:dataStr);
    49 
    50 
    51 
    52     /*响应*/
    53     xhr.onreadystatechange = function () {
    54         /*一定要完全完成通讯*/
    55         if(xhr.readyState == 4){
    56             if(xhr.status == 200){
    57                 /*请求成功*/
    58                 /*字符串 xml josn格式的字符串  数据转换*/
    59                 /*获取响应类型*/
    60                 var contentType = xhr.getResponseHeader("Content-Type");
    61                 var result = null;
    62 
    63                 if(contentType.indexOf('xml')>-1){
    64                     /*xml*/
    65                     result = xhr.responseXML;
    66                 }else if(contentType.indexOf('json')>-1){
    67                     /*json*/
    68                     result = JSON.parse(xhr.responseText);
    69                 }else{
    70                     /*string*/
    71                     result = xhr.responseText;
    72                 }
    73                 options.success && options.success(result);
    74 
    75             }else{
    76                 /*请求失败*/
    77                 options.error && options.error({status:xhr.status,statusText:xhr.statusText});
    78             }
    79         }
    80     }
    81 };
    82 
    83 /*get*/
    84 $.get = function (options) {
    85     options.type = 'get';
    86     $.ajax(options);
    87 }
    88 /*post*/
    89 $.get = function (options) {
    90     options.type = 'post';
    91     $.ajax(options);
    92 }

    注:简单写法,仅供参考。

  • 相关阅读:
    异常
    带参数的方法
    变量,基本类型,数据类型和运算符
    数据类型转换(针对数字类型)
    this关键字
    面向对象DAO模式
    常见类 Object
    方法和包
    final关键字
    abstract关键字
  • 原文地址:https://www.cnblogs.com/bfc0517/p/6185416.html
Copyright © 2020-2023  润新知