jQuery Ajax封装(附带加载提示和请求结果提示模版)
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+' : '+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+' : '+res.message,1500) //请求成功,且 res.status != 'OK',弹出服务器返回的错误信息
})
})
说明:写的不好请不要建议,有任何疑问欢迎沟通交流 QQ:306344599
jQuery Ajax封装(附带加载提示和请求结果提示模版)的更多相关文章
- jQuery ajax瀑布流加载静态的列表页面
1.加载一行数据 <script> //滚动加载事件 var Loadurl = "{$url}"; if(window.location.href !== Loadu ...
- JQuery ajax 滚动底部加载更多
<%@ Page Language="C#" %> <%@ Import Namespace="System.IO" %> <%@ ...
- jquery+ajax无刷新加载数据,新闻浏览更多
<script type="text/javascript"> $(document).ready(function (){ $(window).scroll(fu ...
- [转]jquery的ajax交付时“加载中”提示的处理方法
本文转自:http://www.educity.cn/wenda/77121.html jquery的ajax提交时“加载中”提示的处理方法 方法1:使用ajaxStart方法定义一个全局的“加 ...
- jquery的ajax提交时“加载中”提示的处理方法
方法1:使用ajaxStart方法定义一个全局的“加载中...”提示 $(function(){ $("#loading").ajaxStart(function(){ ...
- jquery中ajax跨域加载
今天学习ajax跨域加载,先来一段代码,异步加载的链接是爱奇艺的开源,我直接拿来用作测试 <!DOCTYPE html> <html lang="en"> ...
- jquery的ajax提交时加载处理方法
1.定义全局的,就是所有的ajax的请求的加载都会出现相同的提示 $(function(){ //加载成功显示的状态 $("#showLoading").ajaxSuccess(f ...
- 【Jquery mobile】动态加载ListView 转
[Jquery mobile]动态加载ListView 分类: Jquery Mobile2011-12-01 09:04 13984人阅读 评论(1) 收藏 举报 jquerylistviewmob ...
- ajax请求原理及jquery $.ajax封装全解析
.ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得 ...
- CSS和JavaScript以及Ajax实现预加载图片的方法及优缺点分析
预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画 廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发 ...
随机推荐
- Java爬虫(一)利用GET和POST发送请求,获取服务器返回信息
本人所使用软件 eclipse fiddle UC浏览器 分析请求信息 以知乎(https://www.zhihu.com)为例,模拟登陆请求,获取登陆后首页,首先就是分析请求信息. 用UC浏览器F1 ...
- A*算法的理解与简单实现
基本定义 一种寻路算法,特点是:启发式的,效率高,基本思路比较简单. 用途 寻路.在指定的地图上,考虑到地图上的移动代价,找到最优的路径. 核心概念 开表,闭表,估值函数. 开表 开表,记录了当前需要 ...
- 通过HPS控制FPGA端的GPIO
该笔记主要记录HPS端如何通过AXI Bridge控制FPGA端口的GPIO,主要是如何操作FPGA侧的Led 1.AXI Bridge AXIB主要包括H2FB.F2HB.LWH2F ...
- 开源框架是如何通过JMX来做监控的(一) - JMX简介和Standard MBean
相关文章目录: 开源框架是如何通过JMX来做监控的(一) - JMX简介和Standard MBean 开源框架是如何通过JMX来做监控的(二) - Druid连接池的监控 相信很多做Java开发的同 ...
- LeetCode:60. Permutation Sequence,n全排列的第k个子列
LeetCode:60. Permutation Sequence,n全排列的第k个子列 : 题目: LeetCode:60. Permutation Sequence 描述: The set [1, ...
- [C#] BarcodeLib -- 一个精简而不失优雅的条形码生成库
BarcodeLib -- 一个精简而不失优雅的条形码生成库 引言 在百度进行“C# 条形码”等类似关键字搜索的时候,基本上是使用 ZXing 类库进行条形码的生成.今天我所介绍的是另一款类库 Bar ...
- CMD和seaJS
前面的话 CMD(Common Module Definition)表示通用模块定义,该规范是国内发展出来的,由阿里的玉伯提出.就像AMD有个requireJS,CMD有个浏览器的实现SeaJS,Se ...
- Jetty + HttpClient 处理http请求
本人最近通过自己动手处理http请求,对http协议.Jetty以及HttpClient有了更深刻的理解,特在此与大家分享. 此图是http协议的请求格式.根据请求方法,有get和post之分.get ...
- iOS 比较版本号大小的方法
比较iOS版本号大小 eg:3.2.0和3.1.0 或者 3.2.0和3.2比较 返回bool值变量YES or NO -(BOOL)compareVesionWithServerVersion:(N ...
- LINQ基础(三)
一.并行LINQ System.Linq名称空间中包含的类ParallelEnumerable可以分解查询的工作,使其分布在多个线程上. 尽管Enumerable类给IEnumerable<T& ...