apicloud前后端交互小结

登录(传参,不传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拆成两段发送,第一次发送文本,第二次发送图片

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

靓仔很忙i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值