登录(传参,不传token)
api.ajax({
url: "http://xxx.xxx.xxx.xx:8080/ies/gunsApi/auth",
method: 'post',
data: {
values: {
"username": usernameValue,
"password": passwordValue
}
}
}, function(ret, err) {
if (ret) {
//登录成功后的操作
$api.setStorage('userInfo', ret);
api.alert({
title: '提示',
msg: '登录成功',
}, function(ret, err) {
if (ret) {
//api.closeWin();
api.openWin({
name: 'allExamInfo',
url: './allExamInfo.html',
pageParam: {
name: usernameValue
}
});
}
});
} else {
//登录失败后的操作
api.toast({
msg: '登录失败,用户名或密码错误',
duration: 2000,
location: 'middle'
});
}
});
请求接口(传参不含文件,带token)
function getExamInfoBySiteId(){
var siteId=$api.getStorage('siteInfo');
alert("考点:"+siteId)
var user=$api.getStorage('userInfo');
var token='Bearer '+user.token;
api.ajax({
url: "http://xxx:8080/ies/gunsApi/selectPatchFromSiteId",
method: 'post',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization':token
},
data: {
values: {
"siteId": siteId
}
}
}, function(ret, err) {
if (ret) {
//执行成功后的操作
console.log(JSON.stringfy(ret))
} else {
api.toast({
msg: '数据请求失败',
duration: 2000,
location: 'middle'
});
}
});
}
请求接口(传参含文件,带token)
解决方案:
1.使用原始js发送ajax请求
2.将图片转为base64与后台交互
在不知情的情况下,我使劲把文件往data中塞,具体如下
data: {
values: {
siteId : 165,
examinationPatchId:formData.get('examinationPatchId'),
file:$('#file')[0].files[0]
}
}
后端一直报错,
前端ajax的头不加 "Content-Type": "multipart/form-data",
前段ajax的头加 "Content-Type": "multipart/form-data"
第一个的解决方案让我加头,第二个解决方案,让我不加头,一脸懵逼。最后受人点播,想到出现这个问题的原因可能因为文本和文件混乱,这时候将data变更一下
data: {
values: {
siteId : 165,
examinationPatchId:formData.get('examinationPatchId')
},files:{
file:$("#file")[0].files[0]
}
}
之前的问题消失了,但后台接收的文件为空。
后来发现出现这个的原因是因为apicloud自身对jquery的ajax做了处理,将jquery的ajax拆成两段发送,第一次发送文本,第二次发送图片