1、现在用vue多封装方式很多提供一个模板封装的方式,之争对vue中使用
//使用方法
apiMethods('路径',参数,"请求方式").then(res => {
if (res.success) {
$.messager.alert("系统提示", res.message, 'info');
}
}).catch(err => {
$.messager.alert("提示信息", err.message)
})
/**
*url :路径
*opt :参数
*methods:请求方式
*直接使用接口访问就可以,不需要添加IP地址
**/
function api(url,opt,methods) {
return new Promise(function(resove,reject){
methods = methods || 'POST';
var xmlHttp = null;
if (XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else {
xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
};
var params = [];
for (var key in opt){
if(!!opt[key] || opt[key] === 0){
params.push(key + '=' + opt[key]);
}
};
var postData = params.join('&');
if (methods.toUpperCase() === 'POST') {
xmlHttp.open('POST', url, true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
xmlHttp.send(postData);
}else if (methods.toUpperCase() === 'GET') {
xmlHttp.open('GET', url + '?' + postData, true);
xmlHttp.send(null);
}else if(methods.toUpperCase() === 'DELETE'){
xmlHttp.open('DELETE', url + '?' + postData, true);
xmlHttp.send(null);
}
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
resove(JSON.parse(xmlHttp.responseText));
}
};
});
}
export default api;
2、使用原始的封装方法(参考ajax的请求方式),ajax的请求方式只存在get、post的方式,添加delete看的请求方式
ajaxMethods({
method: 'delete',//请求方式
url: '',//路径
data: {},//参数
success: function(res) {
console.log(JSON.stringify(res.response));
var date=eval("("+res.response+")");//转换返回的格式
if (date.success) {
$.messager.alert("系统提示", date.message, 'info');
}else{
$.messager.alert("系统提示", date.message, 'info');
}
}
});
/******封装的公共方法,使用时提前引用*********/
function ajaxMethods(options) {//请求方式
var method = options.method || 'get'; //请求方法,默认get
var url = options.url || ''; //请求url
var succFn = options.success || function(){console.log('请求成功!')}; //请求成功回调
var data = options.data || null; // 请求数据
var isAsync = options.async === undefined ? true : options.async; //是否是异步请求,默认true
var isFormData = options.isFormData || false; //是否采用表单提交数据的方式,默认false
var jiekou = "http://localhost:8090/"
methods = options.method || 'get';
var xmlHttp = null;
if (XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else {
xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
};
var params = [];
for (var key in options.data){
if(!!data[key] || data[key] === 0){
params.push(key + '=' + data[key]);
}
};
var postData = params.join('&');
if (methods.toUpperCase() === 'POST') {
xmlHttp.open('POST',jiekou + url, true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
xmlHttp.send(postData);
}else if (methods.toUpperCase() === 'GET') {
xmlHttp.open('GET',jiekou + url + '?' + postData, true);
xmlHttp.send(null);
}else if(methods.toUpperCase() === 'DELETE'){
xmlHttp.open('DELETE',jiekou + url + '?' + postData, true);
xmlHttp.send(null);
}
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
succFn(xmlHttp);
}
};
}