当前位置:首页 > CMS教程 > Thinkphp > 列表

thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-17 11:19:35 浏览: 评论:0 

这篇文章主要介绍了thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json操作,结合实例形式分析了thinkphp5 + ajax 使用formdata提交数据、文件上传与后台返回json遇到的相关问题即解决方法,需要的朋友可以参考下。

本文实例讲述了thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json,分享给大家供大家参考,具体如下:

知识点总结

1.json格式标准

  1.  
  2. 'key':"value" 
  3.  
  4.  
  5. {"state":"1","msg":"\u7b80\u5386\u6295\u9012\u6210\u529f\uff01"} 

thinkphp5+ajax formdata

前端jquery ajax提交formdata

  1. $.ajax({ 
  2.  
  3. }) 

thinkphp5+ajax formdata

formdata 获取表单数据 包括文件上传

thinkphp5+ajax formdata

HTML

  1. <form class="am-form" id="recruitinfo"> 
  2.  
  3.        <div class="col-lg6 col-md-6 col-xs-12 m1rem"> 
  4.          <label>姓名</label> 
  5.          <input type="text" name="post[name]" id="name" required > 
  6.        </div> 
  7.  
  8.        <div class="col-lg6 col-md-6 col-xs-12 m1rem"> 
  9.          <label>手机号</label> 
  10.          <input type="text" name="post[iphone]" id="iphone" required> 
  11.        </div> 
  12.  
  13.        <div class="col-lg10 col-md-10 col-xs-12 m2rem"> 
  14.  
  15.          <label>附件简历:(您的详细信息请都写在简历上,只接受word文档)</label> 
  16.  
  17.          <div class="am-form-group am-form-file"> 
  18.            <button type="button" class="am-btn am-btn-danger am-btn-sm"> 
  19.              <i class="am-icon-cloud-upload"></i> 选择要上传的简历</button> 
  20.            <input id="doc-form-file" type="file"  name="doc" > 
  21.          </div> 
  22.          <div id="file-list"></div> 
  23.          <script> 
  24.            $(function() { 
  25.              $('#doc-form-file').on('change', function() { 
  26.                var fileNames = ''
  27.                $.each(this.files, function() { 
  28.                  fileNames += '<span class="am-badge">' + this.name + '</span> '; 
  29.                }); 
  30.                $('#file-list').html(fileNames); 
  31.              }); 
  32.            }); 
  33.          </script> 
  34.  
  35.          <input type="hidden"  name="post[jobname]" id="jobname"  value="{$data.job}"> 
  36.          <input type="hidden"  name="post[jobnameid]" id="jobnameid" value="{$data.id}"> 
  37.  
  38.  
  39.        </div> 
  40.  
  41.        <div class="col-lg-6 col-md-6 col-xs-12"> 
  42.          <button type="submit" class="am-btn am-btn-primary" onclick="submitform()">提交</button> 
  43.          <a href="javascript:window.history.back(-1);" rel="external nofollow" class="am-btn am-btn-default">返回</a> 
  44.        </div> 
  45.  
  46.      </form> 

JS

  1. <script type="text/javascript"
  2.        function submitform() { 
  3.  
  4.          event.preventDefault(); 
  5.          var form =document.getElementById('recruitinfo'), 
  6.            formdata = new FormData(form); 
  7.  
  8.  
  9.          var url = '{:url("recruitinfo/postfrom")}'
  10.  
  11.  
  12.          $.ajax({ 
  13.            url:url, 
  14.            type:'post'
  15.            data:formdata, 
  16.            dataType:'json'
  17.            processData:false
  18.            contentType:false
  19.            success:function (res) { 
  20.              console.log('请求成功!'
  21.              console.log(res) 
  22.            }, 
  23.            error:function (XMLHttpRequest, textStatus, errorThrown) { 
  24.              console.log('出错啦!'
  25.              console.log(XMLHttpRequest); 
  26.              console.log(textStatus); 
  27.              console.log(errorThrown); 
  28.            } 
  29.          }) 
  30.  
  31.        } 
  32.      </script> 

php json_encode()函数转成json

  1. $callbackinfo = array
  2.          'state' => '1'
  3.          'msg'  => '简历投递成功!'
  4.        ); 
  5.          
  6.  
  7.        $jsondata =json_encode($callbackinfo); 
  8.  
  9.         
  10.        echo $jsondata

问题

1.前端SyntaxError: Unexpected token < in JSON at position 0 报错

报错原因

使用的thinkphp5

没想到是因为使用了dump()函数 var_dump 这些最后echo出来的不正确导致的,还要要按标准格式来啊

解决方法

去掉dump相似的函数

Tags: thinkphp5+ajax formdata

分享到: