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

时间:2022-08-26 11:10:56

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

知识点总结

1.json格式标准

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

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

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

前端jquery ajax提交formdata 

?
1
2
3
$.ajax({
 
})

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

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

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

 HTML

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

 JS

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

php json_encode()函数转成json

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

问题

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

报错原因

使用的thinkphp5

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

解决方法

去掉dump相似的函数

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

原文链接:https://www.cnblogs.com/xxx91hx/p/9294954.html