1、创建HTML文件(demo)

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>jQuery Ajax</title>
    <script type="text/javascript" src="jquery-3.2.0.min.js"></script>
    <style type="text/css">
        button{
            border: none;
            outline: none;
            background: rgba(225,0,0,0.88);
            padding: 5px 50px;
            color: #EFEFEF;
            font-size: 16px;
            font-weight: bold;
            border-radius: 0 8px 8px 8px;
            letter-spacing: 5px;
            }
    </style>
</head>
<body>
    <article class="demo">
        <button type="button" id="jpost">Post</button>
        <button type="button" id="jget">Get</button>
</article>
</body>
</html>

2、创建加载提示模版并添加CSS样式

//JavaScript部分
var load = { init:function(){ //请求开始 var article = document.createElement('article') article.className = 'loader' var div = document.createElement('div') div.className = 'loading' var tips = ['拼','命','加','载','中','···'] for(var index = 0;index<tips.length;index++){ var span = document.createElement('span') span.innerHTML = tips[index] div.appendChild(span) } article.appendChild(div) var body = document.getElementsByTagName('body')[0] body.appendChild(article) }, remove:function(){ //请求完成 var body = document.getElementsByTagName('body')[0] var loadText = document.getElementsByClassName('loader')[0] console.log(loadText) body.removeChild(loadText) } }
//CSS样式部分
.loader .loading span{ display: inline-block; position: relative; margin: 5px; } .loader .loading span:nth-child(even){ animation: moveup 2s linear infinite; } .loader .loading span:nth-child(odd){ animation: movedown 2s linear infinite; } @keyframes movedown{ 0%{bottom: 3px;} 50%{bottom:-3px;} 100%{bottom: 3px;} } @keyframes moveup{ 0%{top: 3px;} 50%{top:-3px;} 100%{top: 3px;} }

 3、创建请求提示模版并添加CSS样式

//JavaScript部分
function tip(tipMsg,time){ tipMsg = tipMsg|| '请求异常,请联系客服!' //默认提示信息 time = time || 3000 //默认提示时间 var addTip = document.createElement('article') addTip.className = 'tip-msg' var addText = document.createElement('p') addText.innerHTML = tipMsg addTip.appendChild(addText) var body = document.getElementsByTagName('body')[0] body.appendChild(addTip) setTimeout(function(){ //移除提示 var removeTip = document.getElementsByClassName('tip-msg')[0] body.removeChild(removeTip) },time) }
//CSS样式部分
.tip-msg{ width: 100%; text-align: center; position: fixed; top: 30%; z-index:; } .tip-msg>p{ display: inline-block !important; background-color: rgba(0,0,0,0.8); color: #FFFFFF; padding: 2px 8px; border-radius: 5px; }

4、封装jQuery Ajax 方法

function baseAjax(requestPath, requestData,requestType,succCallback, errorCallback, dataType){
                    /*requestPath:请求路径
                     requestData:请求参数,默认为空
                     requestType:请求方式("POST" 或 "GET"), 默认为 "GET"
                     succCallback:请求成功回调函数
                     errorCallback:请求失败回调函数
                     dataType:预期服务器返回的数据类型, 默认为 JSON */
                    requestData = requestData || {}
                    requestType = requestType || 'GET'
                    dataType = dataType || 'JSON'
                    $.ajax({
                        url:requestPath,               //请求地址
                        type:requestType,              //请求类型
                        data:requestData,              //请求数据
                        timeout:100000,                //请求超时时间(毫秒)
                        beforeSend:function(){
                            load.init()                //发送请求之前,插入加载提示信息“拼命加载中···”
                        },
                        success:function(res){         //请求成功
                            if(res.message == 'OK'){   //res.message不是唯一,也有可能是res.code 需结合项目实际场景来写入判断条件
                                if(succCallback){
                                    succCallback(res)  //返回OK回调函数,将返回的数据res传入到该回调函数中
                                    }
                            }else{
                                if(errorCallback){
                                    errorCallback(res) //返回不是OK时回调函数,将返回的数据res传入到该回调函数中
                                    }
                            }
                        },
                        complete:function(res,status){
                            load.remove()             //请求完成 移除加载提示“拼命加载中···”
                        },
                        error:function(){
                            tip()                     //请求错误,弹出提示
                        }
                    })
                }
                

5、再次封装上面的jQuery Ajax 方法

function jPost(path,data,succCallback,errorCallback){
         //再次封装-有参数
         baseAjax(path,data,'POST',succCallback,errorCallback)
}
 function noParameterJPost(path,succCallback,errorCallback){
         //再次封装-无参数
         baseAjax(path,{},'POST',succCallback,errorCallback)
}

function jGet(path,data,succCallback,errorCallback){
         //再次封装-有参数
         baseAjax(path,data,'GET',succCallback,errorCallback)
}
function noParameterJGet(path,succCallback,errorCallback){
         //再次封装-无参数
          baseAjax(path,{},'GET',succCallback,errorCallback)
}
//只写了这两种类型请求方法,其他方式依次类推

6、使用上面封装的 jPost() 和 jGet()方法演示两个请求

$("#jpost").on('click',function(){
                    jPost('http://api.36wu.com/Mobile/GetMobileOwnership',{
                        mobile:15988886666,
                        format:'json',
                        authkey:'5f5d61494c8d41de854f853978aefe696'
                    },function(res){
                        tip(res.status,1500)                            //请求成功,且 res.status == 'OK'
                    },function(res){
                        tip(res.status+'&nbsp;:&nbsp;'+res.message,1500)//请求成功,且 res.status != 'OK',弹出服务器返回的错误信息
                    })
                    })

                $("#jget").on('click',function(){
                    jGet('http://api.36wu.com/Ip/GetIpInfo',{
                        ip:'192.168.1.106',
                        format:'json',
                        authkey:'5f5d61494c8d41de854f853978aefe69'
                    },function(res){
                        tip(res.status,1500)                              //请求成功,且 res.status == 'OK'
                    },function(res){
                        tip(res.status+'&nbsp;:&nbsp;'+res.message,1500) //请求成功,且 res.status != 'OK',弹出服务器返回的错误信息
                    })
                })

说明:写的不好请不要建议,有任何疑问欢迎沟通交流 QQ:306344599

jQuery Ajax封装(附带加载提示和请求结果提示模版)的更多相关文章

  1. jQuery ajax瀑布流加载静态的列表页面

    1.加载一行数据 <script> //滚动加载事件 var Loadurl = "{$url}"; if(window.location.href !== Loadu ...

  2. JQuery ajax 滚动底部加载更多

    <%@ Page Language="C#" %> <%@ Import Namespace="System.IO" %> <%@ ...

  3. jquery+ajax无刷新加载数据,新闻浏览更多

      <script type="text/javascript"> $(document).ready(function (){ $(window).scroll(fu ...

  4. [转]jquery的ajax交付时“加载中”提示的处理方法

    本文转自:http://www.educity.cn/wenda/77121.html jquery的ajax提交时“加载中”提示的处理方法    方法1:使用ajaxStart方法定义一个全局的“加 ...

  5. jquery的ajax提交时“加载中”提示的处理方法

    方法1:使用ajaxStart方法定义一个全局的“加载中...”提示 $(function(){    $("#loading").ajaxStart(function(){    ...

  6. jquery中ajax跨域加载

    今天学习ajax跨域加载,先来一段代码,异步加载的链接是爱奇艺的开源,我直接拿来用作测试 <!DOCTYPE html> <html lang="en"> ...

  7. jquery的ajax提交时加载处理方法

    1.定义全局的,就是所有的ajax的请求的加载都会出现相同的提示 $(function(){ //加载成功显示的状态 $("#showLoading").ajaxSuccess(f ...

  8. 【Jquery mobile】动态加载ListView 转

    [Jquery mobile]动态加载ListView 分类: Jquery Mobile2011-12-01 09:04 13984人阅读 评论(1) 收藏 举报 jquerylistviewmob ...

  9. ajax请求原理及jquery $.ajax封装全解析

    .ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得 ...

  10. CSS和JavaScript以及Ajax实现预加载图片的方法及优缺点分析

    预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画 廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发 ...

随机推荐

  1. TP5.0 PHPExcel 数据表格导出(原)

    今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExcel没有命名空间,所以框架里面的use根本引入不进去, ...

  2. 微信公众号开发笔记3-sdk接入(nodejs)

    另一个2小时 access_token是需要2小时更新一次,在这里,又引入了一个2小时获取一次的字段,这个字段是: jsapi_ticket,这个字段是接入sdk的前提.与access_token类似 ...

  3. Java发布一个简单 webservice应用 并发送SOAP请求

    一.创建并发布一个简单的webservice应用 1.webservice 代码: package com.ls.demo; import javax.jws.WebMethod; import ja ...

  4. WBS任务分解中前置任务闭环回路检测:有向图的简单应用(C#)

    1 场景描述 系统中用到了进度计划编制功能,支持从project文件直接导入数据,并能够在系统中对wbs任务进行增.删.改操作.wbs任务分解中一个重要的概念就是前置任务,前置任务设置确定了不同任务项 ...

  5. ASP.NET Core MVC 模型绑定用法及原理

    前言 查询了一下关于 MVC 中的模型绑定,大部分都是关于如何使用的,以及模型绑定过程中的一些用法和概念,很少有关于模型绑定的内部机制实现的文章,本文就来讲解一下在 ASP.NET Core MVC ...

  6. JSONObjec序列化对象过滤为null的属性

    @Test public void test3() { PgwReqtBody3002 pgwReqtBody3002 = new PgwReqtBody3002(); pgwReqtBody3002 ...

  7. 014 一对多关联映射 单向(one-to-many)

    在对象模型中,一对多的关联关系,使用集合来表示. 实例场景:班级对学生:Classes(班级)和Student(学生)之间是一对多的关系. 多对一.一对多的区别: 多对一关联映射:在多的端加入一个外键 ...

  8. APP为什么需要着陆页

    小编APP运营团队一直认为,虽然大多数的用户会在App Store或安卓应用商店中搜寻我们的应用,但也有许多用户会通过传统的PC端搜索来寻找答案.而且在APP营销中,为了更好的将用户转换为下载或购买, ...

  9. [HDU1002] A + B Problem II

    Problem Description I have a very simple problem for you. Given two integers A and B, your job is to ...

  10. 面向对象(java菜鸟的课堂笔记)

    类:相同的东西放在一起 分为属性和动作: 把一组或多组事物相同的特性的描述==>类   属性和动作被称为成员: //声明类的属性信息 public class **{ String name: ...