jquery的$.ajax()利用FormData数据类型与php后台交互

article/2025/10/9 8:59:47

可能孤陋寡闻,现在才知道MDN的存在:https://developer.mozilla.org/zh-CN/

的MDN全名容易理解他是什么意思:MDN Web Docs

 

好了,自行学习,上一篇讲了jquery的$.ajax()利用json数据类型与php后台交互

那么从MDN上了解到,原来html5中表单数据除了用json数据类型来传给后台,还可以用FormData数据类型来进行传递,而且FormData还加入了文件数据类型的传递。有利于ajax与php后台的文件上传。

 

先来看看MDN是怎么描述FormData的:https://developer.mozilla.org/en-US/docs/Web/API/FormData

 

//构造函数
var formdata = new Formdata();

 

使用FormData的接口主要是键(name)和值(value)

那么好了,构造完FormData了,其实其方法主要是FormData.append();插入元素,添加键和值,但是也需要注意

FormData.append()和FormData.set()的区别。

 

 

// append()两个重载函数
formData.append(name, value);
formData.append(name, value, filename);

FormData.append():如果键已经存在,不断使用append()会将新值添加到已有的值集合后面

FormData.set():如果键已经存在,set()会将新值覆盖掉原来的值

FormData.append()中filename可有可无,但是name和value就必须要有。

MDN中讲到value值可以是Blob和File类型的值,File好理解;Blob(binary large object)),通俗点讲就是大的二进制对象,可以是图片、音频,而且BLOB常常是数据库中用来存储二进制文件的字段类型,例如mysql数据库。

 

好了,讲完那么多,直接实践

 

先试一波水,其实想找上传文件,然后获取文件名;但是想着先确认能不能直接在js中获取文件名,结果很出乎意料,js好像没有特定的函数可以直接获取文件名的,情急之下,唯有采取路径名来进行分解。

 

 

 文件:<input type="file" name="file" id="file"><br> //html代码
//js代码var file = $("#file").val(); //获取文件路径名console.log(file);var index = file.lastIndexOf("\\"); //最后一个匹配转义字符'\\'的索引位置console.log(index);console.log(file.substring(index+1));  //获取最后'\\'的后面字符串便是文件名

结果:Chrome的结果,说是为了安全隐藏了文件路径,用了个fakepath代替

 

 

无语后,用了Edge试试,行了

 

 

没关系,反正php有一个特定函数可以获取文件名:basename()

 

index.html代码:

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"><!--利用cdn添加js和css库  --><script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script></head>
<body style="text-align: center; padding: 100px;">姓名: <input type="text" name="name" id="yourName" /><br>年龄: <input type="text" name="age" id="yourAge" /><br>性别: <input type="text" name="sex"  id="yourSex"><br>文件:<input type="file" name="file" id="file"><br><button id="send">提交</button>
<br><br><br><br><div id="result">结果:</div>
</body>   <script type="text/javascript">$(function () {$("#send").click(function () {var name = $("#yourName").val();var age = $("#yourAge").val();var sex = $("#yourSex").val();var file = $("#file").val(); //获取文件路径名console.log(file);var index = file.lastIndexOf("\\"); //最后一个匹配转义字符'\\'的索引位置console.log(index);console.log(file.substring(index+1));  //获取最后'\\'的后面字符串便是文件名var formData = new FormData();formData.append('name',name);formData.append('age',age);formData.append('sex',sex);formData.append('file',file);$.ajax({type: "POST",url: "server.php",  //同目录下的php文件data:formData,dataType:"json", //声明成功使用json数据类型回调//如果传递的是FormData数据类型,那么下来的三个参数是必须的,否则会报错cache:false,  //默认是true,但是一般不做缓存processData:false, //用于对data参数进行序列化处理,这里必须false;如果是true,就会将FormData转换为String类型contentType:false,  //一些文件上传http协议的关系,自行百度,如果上传的有文件,那么只能设置为falsesuccess: function(msg){  //请求成功后的回调函数$("#result").append("你的名字是"+msg.name+",性别:"+msg.sex+",年龄:"+msg.age+",上传的文件名:"+msg.file);}});})})</script></html>

 

server.php代码

 

<?php$username = $_POST['name']; //获取索引$age = $_POST['age'];$sex = $_POST['sex'];$file = basename($_POST['file']);  //php的basename() 方法可获取文件名$json_array = array('name'=>$username,'age'=>$age ,'sex'=>$sex,'file'=>$file ); //转换成数组类型$json= json_encode($json_array);  //将数组转换成json对象echo  $json;?>

 

结果:

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/xdg4yH9w.shtml

相关文章

微信公众号发送模板消息 -- PHP后台

微信公众号发送模板消息 – PHP后台 注意&#xff1a;这里的用户openid必须是和你的appid&#xff0c;appsecret是一整套的&#xff0c;所谓一整套的意思就是&#xff0c;openid是通过你当前的这个appid获取到的&#xff0c;如果是通过其他appid获取到的用户openid&#xff0c…

微信小程序获取openid(php后台)

微信小程序已经开放了越来越多的功能&#xff0c;所能实现的用户需求也越多了&#xff0c;但是微信提供的wx.getUserInfo()只能获取用户的表面信息&#xff0c;想要是先发送模板消息或者支付功能&#xff0c;就需要获取用户的openid&#xff08;微信提供给每个微信用户独一无二…

搭建一个PHP后台的开发环境你所需要配置东西都有哪些?XAMPP问题

安装的工具&#xff1a; 1. Mysql workbench / Navicat 2. Postman 3. Visual Studio Code / Sublime Text 4. PHP开发环境 5. Nodejs开发环境 6. xampp 注意&#xff08;mysql版本 5.7以上 php版本&#xff1a;7.0以上&#xff09;/wampserver 工具下载地址&#xff…

PHP后台管理登录界面代码

1&#xff0c;自学PHP&#xff0c;编写一个简单的后台登录管理系统&#xff1b; 2&#xff0c;代码中少部分借用网上开源代码&#xff0c;如有不规范的地方请指正&#xff0c;如有更好的方法&#xff0c;多谢分享&#xff1b; 3&#xff0c;享受编程的乐趣并得到知识的提高&a…

php后台登录,实现后台管理员登录功能

上一章节我们选择了后台登录页面,并且将验证码成功的加入到了登录页 login.html 文件中。并且创建了数据库表admin,加入一条用户名和密码的测试数据。这一节我们就来实现登录功能。 先看一个简单功能实现流程图: 有了流程图就有了思路,顺着思路就知道自己一步一步需要做什么…

微信小程序之from表单提交数据到PHP后台

主要内容&#xff1a;实现微信小程序与PHP后台之间的数据传递 本文通过from表单提交到后台存入数据库来展现 需要注意的有&#xff1a; 勾选 代码如下&#xff1a; demo1.wxml <!--pages/demo1/demo1.wxml--> <form bindsubmitformSubmit bindresetformReset>…

PHP后台发送微信小程序订阅信息(较详细)

最近微信小程序甲方需新增下单提醒功能&#xff0c;于是我去微信文章看接入模板信息&#xff0c;但是看到最新公告&#xff08;模板消息接口将下线&#xff0c;推荐使用订阅信息&#xff09;官方通知&#xff1a; 1. 小程序订阅信息分为一次性订阅信息和长期性订阅信息&#x…

php后台框架整理

1、 fastadmin FastAdmin是一款基于ThinkPHPBootstrap开发的快速后台开发框架。FastAdmin基于Apache2.0开源协议发布&#xff0c;免费且不限制商业使用&#xff0c;目前被广泛应用于各大行业应用后台管理。 官网地址&#xff1a;FastAdmin – 基于ThinkPHP和Bootstrap的极速后…

【OpenCV】在Python环境下安装OpenCV并检测是否安装成功

一、OpenCV概述 OpenCV是一个开源的计算机视觉库&#xff0c;可以在Windows、Linux、MacOS等操作系统上运行。它起源于英特尔性能实验室的实验研究&#xff0c;由俄罗斯的专家负责实现和优化&#xff0c;并以为计算机视觉提供通用性接口为目标。 1.1、计算机视觉 计算机视觉…

安装CV2,安装opencv

几经尝试&#xff0c;发现并没有所谓的"cv2"包&#xff0c; 需要安装的是opencv这个包&#xff0c;安装后就可以import cv2了。方法如下&#xff1a; 方法一&#xff1a; 直接用pip安装&#xff0c;按windows r 输入cmd&#xff0c;在cmd环境下输入&#xff1a; …

opencv的安装及使用

文章目录 一、opencv的安装二、图片示例三.视频示例四、录制视频五、总结六、参考资料 一、opencv的安装 参考该链接https://blog.csdn.net/ssj925319/article/details/109231145完成OpenCV3.4.11 的安装。 二、图片示例 创建code目录&#xff0c;并进入 在该目录下创建te…

Ubuntu下Opencv安装与使用

Opencv 前言一、Opencv的功能二、安装Opencv1.下载 OpenCV 3.4.11 数据包2.解压安装包3.安装cmake和依赖库 三、配置编译环境1.创建编译文件夹2.使用make创建编译3.配置编译环境 四、Opencv使用例程1.图片处理2.视频处理1.虚拟机获取摄像头权限2.播放视频3.录制视频 总结 前言 …

OpenCV库安装

OpenCV库安装 OpenCV库的调用名是cv2 所以会看到这样的import语句 import cv2这句话就是对openCV库的调用 openCV库的下载安装 First 好像不需要像网上的教程那样, 首先去官网下载exe执行文件, 然后在VS中进行配置 直接在teminal中, 进入要指定的conda环境, 然后输入pip…

如何安装OpenCV?OpenCV下载安装流程

安装OpenCV需要以下步骤&#xff1a; 下载OpenCV&#xff1a;首先需要从OpenCV官网&#xff08;https://opencv.org/releases/&#xff09;上下载适合自己操作系统版本的OpenCV。 安装依赖项&#xff1a;在安装OpenCV之前&#xff0c;需要先安装一些必要的依赖项&#xff0c;例…

opencv的安装

记得之前看博客的时候看过很多大佬写过opencv的各种安装方法&#xff0c;有使用网站先下载对应文件进行安装的&#xff0c;不过这个还像还得配置一些环境&#xff0c;也有一些大佬使用prompt命令进行安装的&#xff0c;在本人想要安装opencv时大体看了看大佬们的安装教程&#…

OpenCV安装教程:Windows 安装 Visual Studio + OpenCV + OpenCV contrib

目录 0.写作背景 1.安装visual studio 2.下载OpenCV相关的源码 下载OpenCV原始的源码 下载OpenCV contrib的源码 下载安装cmake 3.cmake编译OpenCV 初始编译 CmakeDownload的bug修复 OpenCV-crontrib编译&#xff1a; Generate生成代码 VS生成代码&#xff1a; 报…

openCV-python安装

同样在anaconda下创建一个opencv-python环境 首先&#xff0c;打开anaconda navigator,然后创建一个环境来放opencv-python。 先点击下面的create&#xff0c;然后创建一个新环境。 选择你的python版本&#xff0c;这里我选择的是Python3.6。你也可以根据你的需要和习惯来选择…

opencv安装教程(通用过程说明)

文章目录 环境说明安装方式说明预编译版本从OpenCV团队获取从第三方开发者获取 从源码编译步骤0&#xff1a;安装准备步骤1&#xff1a;获取源代码步骤2&#xff1a;配置构建环境步骤3&#xff1a;构建步骤4&#xff1a;安装&#xff08;可选&#xff09;步骤5&#xff1a;构建…

【安装】安装OpenCV简易教程

&#xff08;1&#xff09;安装opencv-python 执行命令&#xff1a;pip install opencv-python3.4.1.15 博主指定安装的3.4.1.15版本&#xff0c;根据需求可以自己决定需要什么版本。出现successfly字样即安装成功&#xff0c;如果不放心可以验证&#xff0c;在python解释器下…

OpenCV C++安装和配置

最新版的OpenVINO 2022.1 版本不在默认附带OpenCV工具&#xff0c;所以我们需要额外安装OpenCV工具。 1. 下载并安装OpenCV 访问OpenCV官网 https://opencv.org/ &#xff0c;选择Library下的Releases&#xff0c;进入到下载页面&#xff0c;或直接访问https://opencv.org/rel…