前端代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>添加商品</title>
</head>
<body>
<form>
<!-- <p><label for="">选择分类</label><input type="text" name="typeid" id="typeid" ></p> -->
<p>
<select name="typeid" id="">
<option value="1">手机</option>
<option value="2">笔记本</option>
</select>
</p>
<p><label for="">商品名称</label><input type="text" name="name"></p>
<p><label for="">价格</label><input type="text" name="price"></p>
<p><label for="">库存</label><input type="text" name="stock"></p>
<p><label for="">图片</label><input type="file" name="img"></p>
<p><textarea name="desc" id="" cols="30" rows="10"></textarea></p>
<button>提交</button>
</form>
</body>
<script src="../../lib/jquery/dist/jquery.min.js"></script>
<script src="../Include/js/add.js"></script>
<script> $('form').submit(function (e) {
var formData = new FormData(this);
$.ajax({
url:"../Controller/add.php",
type:"post",
data:formData,
processData:false,
contentType:false,
success:function(res){
console.log(res);
}
})
e.preventDefault(); })
</script>
</html>

后端代码

// var formData = new FormData(this);
// 把 formData 传给后端, 数据和文件都是通过表单标签的 name 属性值获取 // 1. 接收表单文本数据
/// $typeid = $_POST['typeid'];
// 2. 接收文件
// $_FILES['img'] <?php // 数据库连接信息
header("content-type:text/html; charset=utf-8");
$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = "emall"; // 1. 获取表单传来的数据
$typeid = $_POST['typeid'];
$name = $_POST['name'];
$price = $_POST['price'];
$stock = $_POST['stock'];
$desc = $_POST['desc']; // 2. 上传图片
// 文件前缀
$prefix = 'goods_'; // 获取文件后缀
$temp = explode('.', $_FILES['img']['name']); // 切割字符串
$suffix = end($temp); // 返回数组最后一个元素 // 文件名
$img = $prefix . uniqid().'.'.$suffix;
// 移动文件
move_uploaded_file($_FILES['img']['tmp_name'],'../../public/images/goods/'. $img); $arr = ['typeid' => $typeid,'name' => $name, 'price' => $price,'stock' => $stock, 'img' => $img,'desc'=>$desc];
print_r(json_encode($arr)); // 3. 把数据上传到数据库 // 3.1 连接数据库
$link = mysqli_connect('localhost', 'root', '123456', 'mall'); // 3.2 操作
$sqlInsert = "INSERT INTO `goods` VALUES(NULL,$typeid, '$name', $price, $stock, '$img','$desc')";
// 解决插入数据中文乱码
mysqli_query($link, "set names utf8");
$res = mysqli_query($link, $sqlInsert);
if($res){
echo "成功";
} else {
echo "失败";
}

ajax上传文件,通过FromData把数据传给后端的更多相关文章

  1. IE8/9 JQuery.Ajax 上传文件无效

    IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...

  2. springMVC+jsp+ajax上传文件

    工作中遇到的小问题,做个笔记 实现springMVC + jsp + ajax 上传文件 HTML <body> <form id="myform" method ...

  3. Ajax上传文件进度条显示

    要实现进度条的显示,就要知道两个参数,上传的大小和总文件的大小 html5提供了一个上传过程事件,在上传过程中不断触发,然后用已上传的大 小/总大小,计算上传的百分比,然后用这个百分比控制div框的显 ...

  4. 伪ajax上传文件

    伪ajax上传文件   最近在折腾伪ajax异步上传文件. 网上搜索了一下,发现大部分方法的input file控件都局限于form中,如果是在form外的呢? 必须动态生成一个临时form和临时if ...

  5. flask jQuery ajax 上传文件

    1.html 代码 <div> <form id="uploadForm" enctype="multipart/form-data" > ...

  6. ajax上传文件显示进度

    下面要做一个ajax上传文件显示进度的操作,文末有演示地址 这里先上代码: 1.前端代码 upload.html <!DOCTYPE html> <html lang="e ...

  7. 闲话ajax,例ajax轮询,ajax上传文件[开发篇]

    引语:ajax这门技术早已见怪不怪了,我本人也只是就自己真实的经验去总结一些不足道的话.供不是特别了解的朋友参考参考! 本来早就想写一篇关于ajax的文章的,但是前段时间一直很忙,就搁置了,趁着元旦放 ...

  8. ajax上传文件及进度显示

    之前在博文:原生ajax写法就提及过ajax2.0与1.0的差别是多了FormData和利用FormData文件上传(当然还有跨域,但不是本文的重点). 那么具体怎么样实现ajax上传文件呢? 一般来 ...

  9. django 基于form表单上传文件和基于ajax上传文件

    一.基于form表单上传文件 1.html里是有一个input type="file" 和 ‘submit’的标签 2.vies.py def fileupload(request ...

  10. Ajax 上传文件(input file FormData)

    FormData对象用以将数据编译成键值对,以便用XMLHttpRequest来发送数据.其主要用于发送表单数据,但亦可用于发送带键数据(keyed data),而独立于表单使用. jQuery Aj ...

随机推荐

  1. js 实现排序算法 -- 冒泡排序(Bubble Sort)

    原文: 十大经典排序算法(动图演示) 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作 ...

  2. 对javascript EventLoop事件循环机制不一样的理解

    前置知识点: 浏览器原理,浏览器内核5种线程及协作,JS引擎单线程设计推荐阅读: 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理 [FE]浏览器渲染引擎「内核」 js异步编程,Promise ...

  3. 探索Linux通用SCSI驱动器

    通过 SCSI 命令管理计算机上的数据,并将数据传输到 SCSI 设备.在本文中,作者介绍了一些 SCSI 命令,以及在 Linux® 中使用 SCSI API 时执行 SCSI 命令的方法.他介绍了 ...

  4. 阿里为何要用独立APP挖微信微商墙角?

    ​ 微商,这个被很多人看来是逃离马云魔咒,和淘宝抗衡的电商模式,自诞生到狂飙就伴随着种种争议.由于传播效率极强,在很长时间里也一直是不少人口中津津乐道的神话故事和救市良方.以至于,淘宝推出各种手段封杀 ...

  5. Flutter跨平台框架的使用-iOS最新版

    科技引领我们前行 [前言] 1:先简单的介绍下Flutter,它是一款跨平台应用SDK,高性能跨平台实现方案(暂时讨论iOS和Android), 它不同于RN,少了像RN的JS中间桥接层,所以它的性能 ...

  6. 启动时查看配置文件application.yml

    Spring Boot Application 事件和监听器 在多环境的情况下. 可能需要切换配置文件的一个对应的属性来切换环境 面临的问题就是 如何在springboot加载完配置文件的时候就可以立 ...

  7. 常见WAF绕过思路

    WAF分类 0x01 云waf 在配置云waf时(通常是CDN包含的waf),DNS需要解析到CDN的ip上去,在请求uri时,数据包就会先经过云waf进行检测,如果通过再将数据包流给主机. 0x02 ...

  8. OpenCV图像增强(python)

    为了得到更加清晰的图像我们需要通过技术对图像进行处理,比如使用对比度增强的方法来处理图像,对比度增强就是对图像输出的灰度级放大到指定的程度,获得图像质量的提升.本文主要通过代码的方式,通过OpenCV ...

  9. Ant-design-pro的动态菜单的实现

    页面效果: 如何实现: 1:分别建立SiderMenu和SubMenu组件 2.去and-desingn-vue的官方文档里copy单文件递归菜单的代码https://www.antdv.com/co ...

  10. RIP实验

    实验要求 1.  理解 RIP 协议的工作原理2.  理解 RIPv1.RIPv2 的特性3.  掌握 RIP 协议的基本配置方法4.  掌握 RIP 自动汇总和手动汇总的方法5.  掌握 RIP 配 ...