本文实例讲述了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" } |
前端jquery ajax提交formdata
1
2
3
|
$.ajax({ }) |
formdata 获取表单数据 包括文件上传
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