vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > vue使用formData时候传递参数是空值

vue使用formData时候传递参数是个空值的情况处理

作者:肥仔仔仔

这篇文章主要介绍了vue使用formData时候传递参数是个空值的情况处理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

使用formData时候传递参数是个空值的情况

关于在vue中使用axios,传递的参数是formData的情况(上传文件,图片,文档等)

formData用途

1.将from表单元素的name和value结合,实现表单数据的序列化

2.异步上传文件

使用formData

1.创建一个空对象

var formData = new FormData();
//大部分情况下,使用formData追加数据,是通过append() Api来进行追加
formData.append(key,value)
//取出追加的值
formData.get(key)
//修改值
formData.set(key,newVale)

2.通过表单对formData进行初始化

<form id="myForm">
    <p>name:<input type="text" name="name"  value="xiaolong"></p>
       <p>age:<input type="text" name="age"  value="23"></p>
    <p><input type="button" id="btn" value="添加"></p>
</form>

通过表单元素作为参数,对formData进行初始化

var btn=document.querySelector("#btn");
btn.onclick=function(){
    //获取表单元素
    var form=document.querySelector("#myForm");
    //初始化表单
    var formdata=new FormData(form);
    //此时可以进行一个操作,获取或者设置表单的值或者直接提交整个表单
    console.log(formdata.get("name"));//xiaolong
}

具体表单的操作API

大部分可以从mdn上面查找到

举个例子:

获取表单数据或者获取整个表单对应key的数据

formData.get('age')//获取一个key为age的值
formData.getAll('age')//获取全部key为age的数据

在vue里面使用formData的时候,因为axios是进行了二次封装,所以传递表达的时候会传递一个空表单过去,这是因为axios在进行二次封装的时候回影响到原来的表单提交或者文件上传

因此在使用二次封装axios的时候需要进行一个参数的设置

this.$axios({
    method: "post",
    url: `你的请求地址`,
    data: formD,//这个是我的fromdata
    headers: {
    transformRequest: [data => data]//此处是我进行设置的转换数据类型
    }
})

关于formData传参问题

目前再做一个支付宝小程序的项目,使用web-view嵌套h5。

做上传图片功能时发现在ios下的formData传值有问题,安卓下就是好的。因为web-view嵌套h5不支持上传图片功能。ios给参数做了一些封装,所以后端接收不到。

然后我就可以利用axios 的transformRequest 配置项。原本调用接口传参方式,由传递formdata格式,改为直接传递普通数据,在transformRequest中组装formdata参数。

 async takePicFiles(file: any) {
    if (file != null) {
      try {
        const res = await ocrImg({
          shopId: getShopId(),
          img: file,
        });
      } catch (e) {}
    }
  }
export const ocrImg = (data:any)=>{
    return http.request({
        url: httpStr + '/output/invoiceOcr/ocrImg',
        method: 'post',
        data,
        transformRequest: [function (data: any) {
            const formdata = new FormData()
            formdata.append("shopId", data.shopId);
            formdata.append("img",data.img);
            return formdata
        }],
        type: 'application/x-www-form-urlencoded',
    })
}

问题解决了 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文