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 相关文章推荐
js去除空格的12种实用方法
Nov 08 Javascript
减少访问DOM的次数提升javascript性能
Feb 24 Javascript
简介JavaScript中valueOf()方法的使用
Jun 05 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
Oct 16 Javascript
JS面向对象编程详解
Mar 06 Javascript
jQuery检查元素存在性(推荐)
Sep 17 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
Nov 18 Javascript
那些精彩的JavaScript代码片段
Jan 12 Javascript
element-ui中select组件绑定值改变,触发change事件方法
Aug 24 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
May 12 jQuery
layer ui 导入文件之前传入数据的实例
Sep 23 Javascript
vue商城中商品“筛选器”功能的实现代码
Jul 01 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的ZipArchive类用法实例
2014/10/20 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
srcElement表格样式
2006/09/03 Javascript
文本链接逐个出现的js脚本
2007/12/12 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
简洁的十分钟Python入门教程
2015/04/03 Python
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
Python处理session的方法整理
2019/08/29 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
一些Solaris面试题
2015/12/22 面试题
应届生幼儿园求职信
2013/11/12 职场文书
股份合作协议书
2014/09/10 职场文书
酒会邀请函
2015/01/31 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书