jQuery+ajax 上传文件input file类型(单图或多图)实现formData 传值到后台

jQuery+formData 上传文件input file类型(单图或多图)实现ajax 传值到后台

最近开发网站时,发现 . p o s t 无法把表单文件类型的数据传到后台 ( 只能 .post无法把表单文件类型的数据传到后台(只能 .post无法把表单文件类型的数据传到后台(只能.ajax),这里做个记录整理,方便以后查询。

必须用 $.ajax(),举例以某商品表单信息为例

单图

<form id="deitForm" name="editForm">
 <input id="goods-up-img" type="file" name="goods_up_img" />
 </form>

多图

<form id="deitForm" name="editForm">
 <input id="goods-up-img" type="file" name="goods_up_img" multiple />
</form>

	  console.log('goods_id',goods_id);
      var form = document.getElementById('editForm');
      var formdata = new FormData(form);
     
      //如果不需要选择性传参,就直接formdata,给到后台就可以了,但是涉及到文件的,需要处理下
       //单文件
       var file=$("#goods-up-img")[0].files[0];
       formdata.set('goods_up_img',files)
       //多文件
       var files=$("#goods-up-img")[0].files;
       $.each(files,function(i,item){
          formdata.set('goods_pic_img[]',files[i]);
   	   })
       //根据表单选择单文件或多文件
      
       // js ajax提交ckeditor5内容需要手动获取一下
      formdata.set('goods_desc',editor.getData());
      //如果需要指定数据传到后台,则走下面new 一个空对象,把原表单的数据填进去
      var newFormdata = new FormData();
      newformdata.append('goods_desc', goods_desc);
      newFormdata.append('goods_up_img',$("#goods-up-img")[0].files[0])  
      newFormdata.append('goods_id', goods_id);
      // // formdata表单打印不能用console.log(formdata);
      // newFormdata.forEach((value, key) => {
      //     console.log("%s: %s", key, value);
      // })

          $.ajax({
                url: "{:url('admin/goods.goods/uploadFileJson')}",
                type: "post",
                dataType: "json",
                cache: false,
                processData: false,
                contentType: false,
                data: formdata,
                success: function (res) {
                
                //结果处理 比如回显
                
                }
           });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值