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监测ActiveX控件是否已经安装过的代码
Sep 02 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
Oct 23 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
Dec 11 Javascript
jQuery多级手风琴菜单实例讲解
Oct 22 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
Sep 04 Javascript
JS框架之vue.js(深入三:组件1)
Sep 29 Javascript
AngularJS入门示例之Hello World详解
Jan 04 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
Dec 26 Javascript
vue.js与后台数据交互的实例讲解
Aug 08 Javascript
vue实现的组件兄弟间通信功能示例
Dec 04 Javascript
axios携带cookie配置详解(axios+koa)
Dec 28 Javascript
微信小程序 wxParse插件显示视频问题
Sep 27 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
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
Js注册协议倒计时的小例子
2013/06/24 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
2016/12/12 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
微信小程序表单验证form提交错误提示效果
2020/06/19 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
Python聚类算法之凝聚层次聚类实例分析
2015/11/20 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
优秀学生干部个人的自我评价
2013/10/04 职场文书
学习委员自我鉴定
2014/01/13 职场文书
签约仪式策划方案
2014/06/02 职场文书
绿色出行口号
2014/06/18 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
分居协议书范本
2014/11/03 职场文书
2014年信访工作总结
2014/11/17 职场文书
药店收银员岗位职责
2015/04/07 职场文书
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS