TP5.1+AJAX+FormData实现文件跟数据一起提交

前端部分

<form class="layui-form" id="form" action="" style="margin-top: 20px;">
  <input type="hidden" name="user_id" value="{$data.user_id}">
  <div class="layui-form-item" style="margin-top: 14px;">
    <label class="layui-form-label" style="margin-top: -4px;">联系人</label>
    <div class="layui-input-block" style="width: 200px;">
        <select name="contacts_id" lay-filter="aihao">
        <option value=""></option>
        {foreach $contacts as $v}
            <option value="{$v.contacts_id}">{$v.name}</option>
        {/foreach}
        </select>
    </div>
  </div>
  <div class="layui-form-item" style="margin-top: 14px;">
    <label class="layui-form-label" style="margin-top: -4px;">售后类型</label>
    <div class="layui-input-block" style="width: 200px;">
        <select name="sales_type" lay-filter="aihao">
        <option value=""></option>
        <option value="客情维护">客情维护</option>
        <option value="产品质量">产品质量</option>
        <option value="安装问题">安装问题</option>
        <option value="客户拉新">客户拉新</option>
        </select>
    </div>
  </div>
  <div class="layui-form-item" style="margin-top: 14px;">
    <label class="layui-form-label" style="margin-top: -4px;">回访方式</label>
    <div class="layui-input-block" style="width: 200px;">
        <select name="follow_id" lay-filter="aihao">
        <option value=""></option>
        {foreach $follow_up as $v}
            <option value="{$v.follow_id}">{$v.follow_name}</option>
        {/foreach}
        </select>
    </div>
  </div>
  <div class="layui-form-item layui-form-text">
    <label class="layui-form-label">回访详情</label>
    <div class="layui-input-block">
      <textarea style="width: 400px;" name="follow_xq" placeholder="请输入回访详情" class="layui-textarea"></textarea>
    </div>
  </div>
  <div class="layui-form-item">
    <label class="layui-form-label" style="margin-top: -4px;">附件</label>
    <div class="layui-input-block">
      <div class="layui-upload">
        <input type="file" id="file" name="file" class=""></input>
      </div>   
    </div>
  </div>
  <div class="layui-form-item" style="margin-left: 111px;">
      <button type="button" class="layui-btn" lay-submit="" lay-filter="sales_add">立即增加</button>
  </div>
</form>

AJAX部分

//售后回访增加
form.on('submit(sales_add)',function(data) {
    // console.log(data);
    //formdata储存异步上传数据
    var formData = new FormData($('#form')[0]);
    formData.append('file',$(':file')[0].files[0]);//append() 方法在被选元素的结尾(仍然在内部)插入指定内容。
    // console.log(formData);
    $.ajax({
        type: "POST",
        url: "{:url('admin/admin/sales_add')}",
        data:formData,
        //这两个设置项必填     防止ajax处理数据
        contentType: false,// 告诉jQuery不要去设置Content-Type请求头(发送数据到服务器时所使用的内容类型。默认是:"application/x-www-form-urlencoded"。)
        processData: false,// 告诉jQuery不要去处理发送的数据(规定通过请求发送的数据是否转换为查询字符串。默认是 true。)
        //这两个设置项必填     防止ajax处理数据
        success: function(data){
            if(data.code==200){
                // alert('成功')
                //发异步,把数据提交给php
                layer.alert(data.msg, {icon: 1},function() {
                    //刷新当前页面
                    location.reload();
                });
            }else{
                layer.alert(data.msg, {icon: 2})
            }
        },
    });
    return false;
});

后端部分

控制器部分:

/**
 *@作者: 杨某人
 * @描述: 执行售后回访增加
 * @Date: 2021-04-16 10:14:44
 */
public function sales_add(){
    $input=input('post.');
    ///判断前台是否有上传文件
    if($_FILES['file']['error']!=0){
        $file = null;
    }else{
        $file = request()->file("file");//获取前台ajax通过formData传过来的文件数据
    }
    $data=$this->AdminModel->sales_add($input,$file);
    if($data==true){
        return json(['code'=>200,'msg'=>'增加成功']);
    }else{
        return json(['code'=>500,'msg'=>'增加失败']);
    }
}

model部分:

/**
* @作者: 杨某人
* @描述: 执行售后回访增加
* @Date: 2021-04-16 10:14:44
*/
public function sales_add($input,$file){
   //判断上传是否为空   有图片就增加图片   没有的忽略
   if($file==null){
       $arr=array(
           "user_id" => $input['user_id'],//客户id
           "contacts_id" => $input['contacts_id'],//联系人id
           "sales_type" => $input['sales_type'],//售后类型
           "follow_id" => $input['follow_id'],//回访方式(跟进方式id)
           "follow_xq" => $input['follow_xq'],//回访详情
           "sales_add_time" => time(),//增加时间
       );
       $data=db('sales')->insert($arr);
       if($data){
           writelogs(session('id'),$input['user_id'],'售后回访增加',1,'售后回访');//操作写入日志  (登陆者id,用户id,行为描述,操作状态,操作表)
           return true;
       }else{
           writelogs(session('id'),$input['user_id'],'售后回访增加',2,'售后回访');//操作写入日志  (登陆者id,用户id,行为描述,操作状态,操作表)
           return false;
       }
   }else{
       //文件上传
       $info = $file->move('./static/uploads');//把上传的文件移动到设置的地址
       if($info){
           //把\\替换成/
           $info = str_replace("\\","/",$info->getSaveName());//str_replace函数替换字符串中的一些字符(区分大小写)。
           $upload = "/static/uploads/".$info;//拼接文件完整地址
           $up=[
               'user_id'=>$input['user_id'],
               'enclosure_name'=>'售后',
               'enclosure'=>$upload,
               'enclosure_add_time'=>time()
           ];
           $enclosure=db('enclosure')->insertGetId($up);
       }
       //文件上传
       $arr=array(
           "user_id" => $input['user_id'],//客户id
           "contacts_id" => $input['contacts_id'],//联系人id
           "sales_type" => $input['sales_type'],//售后类型
           "follow_id" => $input['follow_id'],//回访方式(跟进方式id)
           "follow_xq" => $input['follow_xq'],//回访详情
           "enclosure_id" => $enclosure,//附件id
           "sales_add_time" => time(),//增加时间
       );
       $data=db('sales')->insert($arr);
       if($data || $enclosure){
           writelogs(session('id'),$input['user_id'],'售后回访增加',1,'售后回访');//操作写入日志  (登陆者id,用户id,行为描述,操作状态,操作表)
           return true;
       }else{
           writelogs(session('id'),$input['user_id'],'售后回访增加',2,'售后回访');//操作写入日志  (登陆者id,用户id,行为描述,操作状态,操作表)
           return false;
       }
   }
   
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值