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 相关文章推荐
JSON 入门指南 想了解json的朋友可以看下
Aug 26 Javascript
可简单避免的三个JS发布错误的详细介绍
Aug 02 Javascript
js进行表单验证实例分析
Feb 10 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
May 27 Javascript
JQuery控制图片由中心点逐渐放大效果
Jun 26 Javascript
Bootstrap 轮播(Carousel)插件
Dec 26 Javascript
php简单数据库操作类的封装
Jun 08 Javascript
vue非父子组件通信问题及解决方法
Jun 11 Javascript
VUE 配置vue-devtools调试工具及安装方法
Sep 30 Javascript
通过实例了解JS 连续赋值
Sep 24 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
Sep 25 Javascript
24个ES6方法解决JS实际开发问题(小结)
May 31 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实现文件安全下载
2006/10/09 PHP
JavaScript的目的分析
2007/01/05 Javascript
javascript 继承实现方法
2009/08/26 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
2015/03/04 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
vue实现登录功能
2020/12/31 Vue.js
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
python实现FTP服务器服务的方法
2017/04/11 Python
简单实现python收发邮件功能
2018/01/05 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
Python中捕获键盘的方式详解
2019/03/28 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
python 读取.nii格式图像实例
2020/07/01 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
西柏坡导游词
2015/02/05 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android