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/Css 文件的代码
Jul 03 Javascript
某人初学javascript的时候写的学习笔记
Dec 30 Javascript
非常好用的JsonToString 方法 简单实例
Jul 18 Javascript
js获取url参数代码实例分享(JS操作URL)
Dec 13 Javascript
jQuery中的ajax async同步和异步详解
Sep 29 Javascript
详解AngularJS中的http拦截
Feb 09 Javascript
JavaScript实现移动端滑动选择日期功能
Jun 21 Javascript
JavaScript Ajax实现异步通信
Dec 14 Javascript
如何使用Bootstrap 按钮实例详解
Mar 29 Javascript
如何进行微信公众号开发的本地调试的方法
Jun 16 Javascript
谈谈node.js中的模块系统
Sep 01 Javascript
原生js实现简单轮播图
Oct 26 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
Mysql的常用命令
2006/10/09 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
javascript中万恶的function实例分析
2011/05/25 Javascript
javascript笔记 String类replace函数的一些事
2011/09/22 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
Python set集合类型操作总结
2014/11/07 Python
Python实现简单状态框架的方法
2015/03/19 Python
python 换位密码算法的实例详解
2017/07/19 Python
Python设计模式之中介模式简单示例
2018/01/09 Python
详解python实现线程安全的单例模式
2018/03/05 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
管理站站长岗位职责
2013/11/27 职场文书
养殖项目策划书范文
2014/01/13 职场文书
社区两委对照检查材料
2014/08/23 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python