thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
时间:2022-07-27
本文章向大家介绍thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例讲述了thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json。分享给大家供大家参考,具体如下:
知识点总结
1.json格式标准
{
'key':"value"
}
{"state":"1","msg":"u7b80u5386u6295u9012u6210u529fuff01"}
前端jquery ajax提交formdata
$.ajax({
})
formdata 获取表单数据 包括文件上传
HTML
<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
<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
$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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
- 使用Python爬取社交网络数据分析
- PHP爬虫源码:百万级别知乎用户数据爬取与分析
- 使用Python抓取欧洲足球联赛数据
- python爬取百度新闻:分析共享单车火爆背后有哪些规则?
- Python爬虫(urllib2+bs4)数据采集:分析找出百度贴吧谁是水贴王
- 学界 | OpenAI 发布稀疏计算内核,更宽更深的网络,一样的计算开销
- 【手把手教你做项目】自然语言处理:单词抽取/统计
- Kaggle赛题解析:逻辑回归预测模型实现
- R语言 使用BP神经网络进行银行客户信用评估
- 使用R语言挖掘QQ群聊天记录
- 解析滴滴算法大赛---GBDT进行数据预测
- 数据迁移中的数据库检查和建议(r2笔记71天)
- 决策树案例:基于python的商品购买能力预测系统
- 数据迁移前的准备和系统检查 (r2笔记70天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringBoot 配置文件编写及使用方式 (拒绝硬编码)
- Docker六脉神剑 (六) 1. Docker集群之Kubernetes(K8S) 了解k8s - 理论篇
- SpringBoot thymeleaf自定义错误页面
- SpringBoot 配置Redis操作
- SpringBoot 自定义banner (小彩蛋)
- SpringBoot使用Mybatis 快速入门
- 【CTR】ESMM:多任务联合学习
- 状态管理之Vuex (三) store利用module拆分
- MySQL 案例:无主键表产生的延迟
- 面试官真的会问:new的实现以及无new实例化
- Android Hilt实战初体验: Dagger替换成Hilt
- Linux系列之学会使用CURL命令
- 潘石屹用python解决100个问题 | 斐波那契数列
- [869]pandas的dataFrame的行列索引操作
- JSP的文件上传处理