异步:
/**
* 请求数据
* @param {string} url:请求地址 如:api/test/test
* @param {string} type:get或post
* @param {object} data:要传入的参数 默认{}
* @param {object} dataType:返回值类型 默认json
*/
function GetRequest(url, type, data = {}, dataType = "json") {
var result = new Promise(function(resolve, reject) {
$.ajax({
url: serverhead + url,//serverhead:链接共有的前置地址
headers: {
},
type: type,
data: data,
dataType: dataType,
success: function(res) {
resolve(res);
},
error: function(err) {
console.log("err", err);
reject(err);
}
})
})
return result;
}
调用:
GetRequest("api/test/test","get").then(function(res){
console.log(res);
})
同步异步都可用:
/**
* 请求数据
* @param {string} url:请求地址 如:api/test/test
* @param {string} type:get或post
* @param {object} data:要传入的参数 默认{}
* @param {object} other:dataType:返回值类型 默认json; async:是否异步 默认true; isall:是否需要所有返回数据 默认false(只返回data)
*/
function GetRequest(url, type, data = {}, other = { dataType: "json", async: true, isall: false }) {
if (serverhead == "") {
console.log("请确定要请求的服务器");
return;
}
var obj = {
isall: false,
async: true,
dataType: "json"
}
if (other != undefined) {
obj.isall = other.isall != undefined ? other.isall : false;
obj.async = other.async != undefined ? other.async : true;
obj.dataType = other.dataType != undefined ? other.dataType : "json";
}
var reqdata = function (resolve, reject) {
var resData = null;
$.ajax({
url: serverhead + url,
headers: {
},
type: type,
data: data,
async: obj.async,
dataType: obj.dataType,
success: function (res, textStatus, xhr) {
if (xhr.status == 500) {
console.log("服务器内部错误");
return;
}
var shu = null;
if (obj.isall) {
shu = res;
} else {
if (res.success != 1) { //1为返回成功的编号
console.log(res.message);
return;
}
if (res.data == null && res.message != "") {
shu = res.message;
} else {
shu = res.data;
}
}
if (resolve != null) {
resolve(shu)
} else {
resData = shu;
}
},
error: function (err, text, xhr) {
console.log("err", err);
if (reject != null) {
reject(err);
}
}
})
if (resolve == null) {
return resData;
}
}
var result = obj.async == true ? new Promise(function (resolve, reject) {
reqdata(resolve, reject);
}) : reqdata(null, null);
return result;
}
同步调用:
let res = GetRequest("api/test/test","get",{},{async:false});