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代码格式化和语法着色V2
Oct 14 Javascript
Flash+XML滚动新闻代码 无图片 附源码下载
Nov 22 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
Jul 31 Javascript
jquery根据name属性查找的小例子
Nov 21 Javascript
使用jsonp完美解决跨域问题
Nov 27 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
Mar 30 Javascript
String字符串截取的四种方式总结
Nov 28 Javascript
jQuery使用bind动态绑定事件无效的处理方法
Dec 11 jQuery
简单的React SSR服务器渲染实现
Dec 11 Javascript
js前端如何写一个精确的倒计时代码
Oct 25 Javascript
Vue实现附件上传功能
May 28 Javascript
如何用JavaScript检测当前浏览器是无头浏览器
Apr 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 文章中的远程图片采集到本地的代码
2009/07/30 PHP
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
简单的php购物车代码
2020/06/05 PHP
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
vue中使用router全局守卫实现页面拦截的示例
2020/10/23 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
部署Python的框架下的web app的详细教程
2015/04/30 Python
python通过post提交数据的方法
2015/05/06 Python
python删除列表内容
2015/08/04 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
css3的transition属性详解
2014/12/15 HTML / CSS
西班牙在线光学:Visual-Click
2020/06/22 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
行政部主管岗位职责
2013/12/28 职场文书
节约能源标语
2014/06/17 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书