jquery Ajax 全局调用封装实例详解


Posted in Javascript onJanuary 16, 2017

前言:

有一种情况:全站都要用异步方式来调用 数据,提交数据,那么你每次操作 都会要$.ajax({.....})

写重复的方法 和代码,冗余太大, 也浪费时间,虽说你有代码自动提示补全,但真的不优雅,身为前端极客,是不能允许的!

【嘿嘿!虽说我现在基本不用jquery了 ,不过异步概念 是永远要用的,就帮助下新人】

jQuery Ajax通用js封装

第一步:引入jQuery库

<script type="text/javascript" src="/js/jquery.min.js"></script>

第二步:开发Ajax封装类,已测试通过,可以直接调用,直接贴代码,讲解就省了

/*****************************************************************
         jQuery Ajax封装通用类 (linjq)    
*****************************************************************/
$(function(){
  /**
   * ajax封装
   * url 发送请求的地址
   * data 发送到服务器的数据,数组存储,如:{"date": new Date().getTime(), "state": 1}
   * async 默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。
   *    注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
   * type 请求方式("POST" 或 "GET"), 默认为 "GET"
   * dataType 预期服务器返回的数据类型,常用的如:xml、html、json、text
   * successfn 成功回调函数
   * errorfn 失败回调函数
   */
  jQuery.ax=function(url, data, async, type, dataType, successfn, errorfn) {
    async = (async==null || async=="" || typeof(async)=="undefined")? "true" : async;
    type = (type==null || type=="" || typeof(type)=="undefined")? "post" : type;
    dataType = (dataType==null || dataType=="" || typeof(dataType)=="undefined")? "json" : dataType;
    data = (data==null || data=="" || typeof(data)=="undefined")? {"date": new Date().getTime()} : data;
    $.ajax({
      type: type,
      async: async,
      data: data,
      url: url,
      dataType: dataType,
      success: function(d){
        successfn(d);
      },
      error: function(e){
        errorfn(e);
      }
    });
  };
  
  /**
   * ajax封装
   * url 发送请求的地址
   * data 发送到服务器的数据,数组存储,如:{"date": new Date().getTime(), "state": 1}
   * successfn 成功回调函数
   */
  jQuery.axpost=function(url, data, successfn) {
    data = (data==null || data=="" || typeof(data)=="undefined")? {"date": new Date().getTime()} : data;
    $.ajax({
      type: "post",
      data: data,
      url: url,
      dataType: "json",
      success: function(d){
        successfn(d);
      }
    });
  };
  
  /**
   * ajax封装
   * url 发送请求的地址
   * data 发送到服务器的数据,数组存储,如:{"date": new Date().getTime(), "state": 1}
   * dataType 预期服务器返回的数据类型,常用的如:xml、html、json、text
   * successfn 成功回调函数
   * errorfn 失败回调函数
   */
  jQuery.axspost=function(url, data, successfn, errorfn) {
    data = (data==null || data=="" || typeof(data)=="undefined")? {"date": new Date().getTime()} : data;
    $.ajax({
      type: "post",
      data: data,
      url: url,
      dataType: "json",
      success: function(d){
        successfn(d);
      },
      error: function(e){
        errorfn(e);
      }
    });
  };



});

第三步:调用模拟

<!DOCTYPE html>
<html>
  <head>
    <base href="<%=basePath%>">

    <title>jQuery Ajax封装通用类测试</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <jsp:include page="/view/common/js_taglib.jsp"></jsp:include>
    <script type="text/javascript">
    $(function(){
      $.ax(
        getRootPath()+"/test/ajax.html",
        null,
        null,
        null,
        null, 
        function(data){
          alert(data.code);
        }, 
        function(){
          alert("出错了");
        }
      );
      
      $.axpost(getRootPath()+"/test/ajax.html", null, function(data){
        alert(data.data);
      });
    
      $.axspost(getRootPath()+"/test/ajax.html",
        null, 
        function(){
          alert("成功了");
        },
        function(){
          alert("出错了");
      });
    });
     </script>
  </head>
  <body>
     
  </body>
</html>
$.axpost(getRootPath()+"/test/ajax.html", null, function(data){
        alert(data.data);
      });

如上代码:只要填写 url,和要传输的 data 字段就行了,避免了重复工作和代码冗余。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
JavaScript 封装Ajax传递的数据代码
Jun 05 Javascript
jquery 学习之二 属性(html()与html(val))
Nov 25 Javascript
根据json字符串生成Html的一种方式
Jan 09 Javascript
最好用的省市二级联动 原生js实现你值得拥有
Sep 22 Javascript
jQuery中nextUntil()方法用法实例
Jan 07 Javascript
jQuery及JS实现循环中暂停的方法
Feb 02 Javascript
微信小程序中使用javascript 回调函数
May 11 Javascript
angular中的cookie读写方法
Aug 02 Javascript
微信小程序视图控件与bindtap之间的问题的解决
Apr 08 Javascript
关于layui 弹出层一闪而过就消失的解决方法
Sep 09 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
Jan 02 Javascript
解决vue-photo-preview 异步图片放大失效的问题
Jul 29 Javascript
javascript循环链表之约瑟夫环的实现方法
Jan 16 #Javascript
函数四种调用模式以及其中的this指向
Jan 16 #Javascript
js实现导航栏中英文切换效果
Jan 16 #Javascript
Bootstrap面板使用方法
Jan 16 #Javascript
codeMirror插件使用讲解
Jan 16 #Javascript
微信小程序 图片边框解决方法
Jan 16 #Javascript
微信小程序 scroll-view隐藏滚动条详解
Jan 16 #Javascript
You might like
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
文档对象模型DOM通俗讲解
2013/11/01 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
[33:39]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第二局
2016/02/27 DOTA
python将html转成PDF的实现代码(包含中文)
2013/03/04 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
Python多进程fork()函数详解
2019/02/22 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
经典的班主任推荐信
2013/10/28 职场文书
党校培训自我鉴定范文
2014/03/20 职场文书
学生个人自我鉴定
2014/03/26 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
工作证明格式及范本
2014/09/12 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
求职信格式范文
2015/03/19 职场文书
休学证明范本
2015/06/19 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
暑假打工感想
2015/08/07 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书