1. /**
    * Created by liyinghao on 2016/8/23.
    */
    /*仿jQuery中的ajax方法,简单版实现;封装ajax的工具函数*/
    /*
    * 1 请求方式 type get post 默认是get方式
    * 2.接口地址 url 都是地址 默认的是当前地址
    * 3.是否异步 async true false 默认的true 异步请求
    * 4.请求数据 data {}对象形式 默认是空对象
    *
    *
    * 5.成功回调函数(成功需要做的事情) success
    * 6.失败回调函数(失败需要做的事情) error
    *
    * 比如 发送前要做的事情 beforeSend
    * */
    window.$ ={
    /* ajax:function(){
    }*/
    };
    /*定义一个ajax工具函数*/
    /*options 是一个对象*/
    $.ajax =function(options){
    /*如果你什么都没传呢?停止执行*/
    /*if(options && typeof options == 'object'){
    }*/
    if(!options ||typeof options !='object')return fasle;
    /*如果传了*/
    var type = options.type ||'get';
    var url = options.url || location.pathname;
    /* false true "" false */
    var async = options.async ===false?false:true;
    /*需要传递的数据*/
    var data = options.data ||{};
    /*需要data转化成ajax传递数据的格式 {name:'',age:''} ===>>> name=gc&age=10 */
    var dataStr ='';
    for(key in data){
    dataStr += key+'='+data[key]+'&';
    };
    /*str.slice(0,-1); 取到倒着数几个字符*/
    dataStr = dataStr && dataStr.slice(0,-1);
    /*ajax编程*/
    /*初始化*/
    var xhr =newXMLHttpRequest();
    /*设置请求行*/
    /*如果是get请求 参数是不是该拼接在url后面*/
    xhr.open(type,type=='get'?url+'?'+dataStr:url,async);
    /*设置请求头*/
    if(type =='post'){
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    }
    /*设置请求内容*/
    xhr.send(type=='get'?null:dataStr);
    /*响应*/
    xhr.onreadystatechange =function(){
    /*首先确定通讯完全完成*/
    if(xhr.readyState ==4){
    /*如果是成功的请求 status == 200 */
    if(xhr.status ==200){
    /*成功*/
    /*知道后台想要返回什么数据类型 application/json;charset=utf-8*/
    /*application/xml application/json text/html text/xml text/json text/css*/
    var contentType = xhr.getResponseHeader('Content-Type');
    var result =null;
    if(contentType.indexOf('xml')>-1){
    /*返回什么数据类型xml*/
    result = xhr.responseXML;
    }elseif(contentType.indexOf('json')>-1){
    /*返回什么数据类型json*/
    var data = xhr.responseText;
    result = data && JSON.parse(data);
    }else{
    result = xhr.responseText;
    }
    /*执行成功回调函数*/
    options.success && options.success(result);
    }else{
    /*失败*/
    options.error && options.error({status:xhr.status,statusText:xhr.statusText});
    }
    }
    }
    };
    /*get*/
    $.get=function(options){
    options.type ='get';
    $.ajax(options);
    }
    /*post*/
    $.post =function(options){
    options.type ='post';
    $.ajax(options);
    } 来自为知笔记(Wiz)

      

Ajax,ajax封装的更多相关文章

  1. 原生态AJAX详解和jquery对AJAX的封装

    AJAX: A :Asynchronous [eI`sinkrenes] 异步 J :JavaScript    JavaScript脚本语言 A: And X :XML 可扩展标记语言 AJAX现在 ...

  2. 【前端学习笔记04】JavaScript数据通信Ajax方法封装

    //Ajax 方法封装 //设置数据格式 function setData(data){ if(!data){ return ''; } else{ var arr = []; for(k in da ...

  3. 原生ajax与封装的ajax使用方法

    当我们不会写后端接口来测试ajax时,我们可以使用node环境创建一个本地服务器. 1.创建一个本地服务器可参考http://www.cnblogs.com/heyujun-/p/6793900.ht ...

  4. Ajax入门(二)Ajax函数封装

    如果看了的我上一篇博客<Ajax入门(一)从0开始到一次成功的GET请求>的话,肯定知道我们已经完成了一个简单的get请求函数了.如下: 1234567891011121314151617 ...

  5. js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)

    js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用) 一.总结 2.匿名函数作为参数传递 二.js进阶ajax函数封装 ajax1.js function ajax(ur ...

  6. jQuery-实现简单的Ajax请求封装

    封装的意义在于复用,在于减少重复的代码. 我在项目中做了简单的Ajax请求封装,实现方式如下: //封装Ajax请求 $.extend({ ajaxDirect:function(url,type,d ...

  7. JQ中的Ajax的封装

    1.认识JQ中ajax的封装      jQ 对于ajax的封装有两层实现:$.ajax 为底层封装实现:基于 $.ajax ,分别实现了$.get 与$.post 的高层封装实现: 2.Ajax的底 ...

  8. Ajax的封装。

    封装 Ajax 因为Ajax 使用起来比较麻烦,主要就是参数问题,比如到底使用GET 还是POST:到 底是使用同步还是异步等等,我们需要封装一个Ajax 函数,来方便我们调用.    封装支持接收来 ...

  9. Jquery Ajax简单封装(集中错误、请求loading处理)

    Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...

  10. Ajax的封装,以及利用jquery的ajax获取天气预报

    1.Ajax的封装 function ajax(type,url,param,sync,datetype,callback){//第一个参数是获取数据的类型,第二个参数是传入open的url,第三个是 ...

随机推荐

  1. MDX members使用

    Members (Set) 函数返回该指定层次结构内所有成员(不包括计算成员)的集: Members (String) 函数返回已指定名称的单个成员. 通常,将 Members (String) 函数 ...

  2. setTimeout,clearTimeout,setInterval,clearInteral详解

    设置定时器,在一段时间之后执行指定的代码,setTimeout与setInterval的区别在于setTimeout函数指定的代码仅执行一次 方法一: window.setTimeout(" ...

  3. (appium+python)UI自动化_01_自动化环境搭建【MAC版】

    Appium简介 Appium是一个开源的.跨平台的测试框架,主要用来进行app UI自动化,适用于原生应用.混合应用和移动网页应用(H5页面).目前支持Python.JavaScript.Objec ...

  4. [Codeforces 729F] Financiers Game

    题意: 两个人分别从长度为n的数列的两端开始取数,如果前一 个人取了k个数,后一个人必须取k或k+1个. 第一个人最 开始可以取1个或2个,不能操作时结束. 两个人都希望自 己取到的数字之和尽量大,并 ...

  5. Selenium:多窗口切换(获取窗口句柄handle)

    我们在操作网页的时候,点击有些页面的链接,会重新打开一个窗口,我们要在新页面上操作,就得切换窗口 比如在百度首页的登录框点击注册,会重新打开一个注册的新页面,要在新页面注册,就得先切进新页面 那我们怎 ...

  6. 【题解】Antisymmetry

    题目大意 对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作“反对称”字符串.比如00001111和010101就是反对称的,1001就不是. 现在给出一个长度为N的 ...

  7. xterm.js的深入学习

    demo <template> <div id="app" class="app-box">Hello</div> < ...

  8. k8s 组件介绍-API Server

    API Server简介 k8s API Server提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心. kub ...

  9. 【知识强化】第四章 网络层 4.7 IP组播

    这节课我们来学习一下IP组播. 首先我们来看这样一个问题,IP数据报在网络当中传输的时候,有几种传输方式呢?三种,分别是单播.广播和组播(多播).这个组播呢也叫做多播,它们俩是一个意思.那这个组播是由 ...

  10. SET TRANSACTION - 设置当前事务的特性

    SYNOPSIS SET TRANSACTION [ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ O ...