ajax.js
3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/**
* Created by mrz on 2017/8/26.
*/
/**
*
* @param url string
* @param param {}
* @param type get/post 默认GET
* @param dataType "json"/ "html" / or other
* @param contentType "application/json;charset=UTF-8" / "application/x-www-form-urlencoded; charset=UTF-8" / text/html;charset=UTF-8
* @returns {*}
*/
function ajax(url, param, type, dataType, contentType) {
// 利用了jquery延迟对象回调的方式对ajax封装,使用done(),fail(),always()等方法进行链式回调操作
// 如果需要的参数更多,比如有跨域dataType需要设置为'jsonp'等等,也可以不做这一层封装,还是根据工程实际情况判断吧,重要的还是链式回调
return $.ajax({
url: url,
data: param || {},
type: type || 'GET',
dataType: dataType || "html",
contentType: contentType || "text/html;charset=UTF-8"
});
}
/**
* AJAX的封装
* @param url string
* @param param "" / {}
* @param type get/post
* @returns {*}
*/
function handleAjax(url, param, type, dataType, contentType) {
return ajax(url, param, type, dataType, contentType).then(function(resp){
// 成功回调
if(resp.result){
return resp.data; // 直接返回要处理的数据,作为默认参数传入之后done()方法的回调
}
else{
return $.Deferred().reject(resp.msg); // 返回一个失败状态的deferred对象,把错误代码作为默认参数传入之后fail()方法的回调
}
}, function(err){
// 失败回调
console.log(err.status); // 打印状态码
});
}
/**
* url 发送请求的地址
* data 发送请求的参数
* callBack 请求的回调函数
* isHideLoading Boolean,是否显示loading动画,此参数可传入也可不传入,当不传入时,isHideLoading会被后续传入的参数覆盖(很可能会被赋值成一个函数),此时可以当他是在给 callBack 赋值, 而忽略 isHideLoading,也就不会显示loading动画
* dataType 返回JSON数据
*/
function HrPost(url, data, isHideLoading, callBack, dataType) {
var dataType;
//如果没有显示loading动画,则此时isHideLoading会被赋值成一个函数,而如果第四个参数也没有传,第四个参数就是undefined
if (!$.isFunction(callBack)) {
if (callBack == undefined) {
dataType = "json";
} else {
dataType = callBack;
}
} else {
dataType = dataType || "json";
}
if (isHideLoading) {
if ($.isFunction(isHideLoading)) {
callBack = isHideLoading;
isHideLoading = false;
}
}
//可以根据自己的实际需求来定制是否显示loading动画
if (isHideLoading) {
var loading = '<div class="ajaxLoading"><div class="loader">加载中...</div></div>';
$("body").append(loading);
$(".ajaxLoading").show();
isHideLoading = false;
}
$.post(url, data, function (res) {
if (!isHideLoading) {
$(".ajaxLoading").hide();
}
if (res != null && res != "") {
if (callBack) {
if ($.isFunction(callBack)) {
callBack(res);
} else {
console.log("callBack is not a function");
}
}
}
}, dataType);
}