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. appium常见问题06_如何解决uiaotomator定位工具报错

    在使用uiaotomator工具定位元素过程中,经常会弹出报错,截图失败,导致无法定位元素,当遇到该问题时,解决办法如下: 方法一:拔掉手机usb连接,重新连接手机 方法二:adb杀掉手机服务,重起服 ...

  2. 《JavaScript DOM 编程艺术》学习成果

    (在线演示地址)[http://thqy39.github.io/works/03.Js%20DOM%20website/index.html]

  3. automate sap遇上的一些问题

    1. get column name of SAPGuiTable columnCount = SAPGuiSession("Session").SAPGuiWindow(&quo ...

  4. PdgCntEditor系列教程一:基础知识

    一.PdgCntEditor是什么? 二.为什么要用PdgCntEditor? 三.怎么用PdgCntEditor? 一.PdgCntEditor是什么? 这是一个目录编辑器,可以创建.编辑PDF.D ...

  5. a标签的锚点链接

    <a href="#creditor" class="clearfix nav_creditor"> <div class="sec ...

  6. [Fw]中断的初始化

    要使用中断肯定得初始化,这些初始化在系统启动时已经为你做好了,但是我们还是来看看怎样初始化的,这样就能更好的理解中断机制了.先看下面函数: 355 void __init init_ISA_irqs  ...

  7. 源码包安装Mysql

    特殊原因我需要装在个人用户下 libtool-2.4.2.tar.xz mysql-5.1.37.tar.gz     1.解压libtool-2.4.2.tar.xz tar -xvf libtoo ...

  8. js实现倒计时+div下落

    全部由js动态生成结点,body内无内容 <style> #count{ position: absolute; text-align: center; width: 240px; hei ...

  9. linux c 链接详解5-虚拟内存管理

    5. 虚拟内存管理 我们知道操作系统利用体系结构提供的VA到PA的转换机制实现虚拟内存管理.有了共享库的基础知识之后,现在我们可以进一步理解虚拟内存管理了.首先分析一个例子: $ ps PID TTY ...

  10. Spring整合Struts2的配置与测试

    整合目的 让Spring的IOC容器管理Struts2的Action 整合步骤 1.新建一个Web项目 2.加入Spring的jar包和添加Spring的配置文件 3.在Web.xml中配置Conte ...