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 相关文章推荐
window.parent调用父框架时 ie跟火狐不兼容问题
Jul 30 Javascript
js对象的构造和继承实现代码
Dec 05 Javascript
使用简洁的jQuery方法实现隔行换色功能
Jan 02 Javascript
JavaScript数据类型之基本类型和引用类型的值
Apr 01 Javascript
JQuery替换DOM节点的方法
Jun 11 Javascript
深入理解js promise chain
May 05 Javascript
jQuery的框架介绍
May 11 Javascript
浅谈JS中String()与 .toString()的区别
Oct 20 Javascript
微信小程序 地图(map)实例详解
Nov 16 Javascript
vue.js删除列表中的一行
Jun 30 Javascript
Vue组件化开发之通用型弹出框的实现
Feb 28 Javascript
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 Vue.js
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的FTP学习(一)
2006/10/09 PHP
php中in_array函数用法分析
2014/11/15 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
Jquery 设置标题的自动翻转
2009/10/03 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
JavaScript中this详解
2015/09/01 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
基于vue实现分页效果
2017/11/06 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
详解python中的 is 操作符
2017/12/26 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
python调用自定义函数的实例操作
2019/06/26 Python
python文件选择对话框的操作方法
2019/06/27 Python
python 实现屏幕录制示例
2019/12/23 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
会计自我鉴定范文
2013/10/06 职场文书
关于幼儿的自我评价
2013/12/18 职场文书
防沙治沙典型材料
2014/05/07 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
工作表现证明
2015/06/15 职场文书