JQ中使用FormData+Ajax发送请求及使用express接收处理FormData数据

最近写大创项目的时候,要做登录功能,考虑到之后还需要上传头像图片,因此决定使用FormData发送表单请求。项目中用的是JQ封装的ajax,配合FormData使用的时候出现了一些问题。

首先这里就不再说明FormData的作用和用法,如果不清楚的可以看看这篇文章:FormData对象的使用。

1. 可能出现的问题

  1. JQ中初始化FormData对象

    在JQ中,如果想使用一个已经存在的表单初始化FormData对象,在选中这个表单DOM的时候,不能使用JQ自带的 $('form') 方法,而是应该使用JS原生写法:

    //错误的写法:
    let formData = new FormData($('form'));
    //正确的写法:
    let formData = new FormData(document.querySelector('form'));
    

    如果使用JQ的选择器写法,那么会报错,大致意思应该是FormData初始化的参数不正确。使用JS原生写法就没问题了。

  2. 配合ajax无法发送请求

    如果在JQ封装的ajax中发送FormData数据,发生报错:TypeError: 'append' called on an object that does not implement interface FormData 。加入这两行:

    processData: false,
    contentType: false
    

2. 完整的发送请求代码

    //使用Formdata提交登录信息//初始化表单let formData = new FormData(document.querySelector('form'));//有需要的话可以修改formdata数据//formdata.set('identiy', identiy);//发送ajax请求$.ajax({url: './login',type: 'post',data: formData,processData: false,  //不处理数据contentType: false,  //不设置内容类型success: function (data) {console.log(data)},error: (err) => {console.log(err)}})

3. 服务器端使用express接收处理FormData数据

需要安装 express-formidable 模块:

npm i express-formidable

使用:

const express = require('express');
const app = express();//引入模块
const formidable = require('express-formidable');
//挂载
app.use(formidable());//接收请求
router.post('/formdata',(req,res,next)=>{console.log(req.fields);  // formData中的参数console.log(req.files);  // formData中的文件
})

JQ中使用FormData+Ajax发送请求及使用express接收处理FormData数据相关推荐

  1. JS中的Ajax发送请求获取数据流程

    前言: JS两个常用的请求方法 [XMLHttpRequest() .fetch()] XMLHttpRequest() 的使用方法大致可以分为四步: 1.创建XMLHttpRequest的对象成员 ...

  2. React ajax 发送请求(六)

    React ajax 发送请求(六) React 官网链接: 英文官网 中文官网 接着上节 React 代理配置(五) 前言 在实际做React 项目的时候, 前端应用需要通过 ajax 请求与后台进 ...

  3. jQuery里如何使用ajax发送请求

    回到文章总目录 本篇文章介绍的是在jQuery里如何使用ajax发送请求 jquery里面的单纯的get请求和单纯的post请求比较简洁的,也比较简易 jquery里面ajax通用方法(自定义个化强) ...

  4. 前后端分离时ajax发送请求时后端能接送,但是前端的response为空时

    困扰了一天的问题,使用ajax向后端发送请求,后端成功接收并且处理,但是返回前端时在前端调用response时发现后端返回的数据为空 . success:function (response) {if ...

  5. js采用ajax发送请求获取数据(实例操作)

    来,案例之前,容我分享一下js如何发送请求. 原生js发送请求: let xhr= new XMLHttpRequest(); // methods:GET/POST请求方式等,url:请求地址,tr ...

  6. mitmdump脚本中使用requests模块发送请求

    本文仅供学习交流使用,如侵立删! 环境 win10.Windows Server 2008 R2 python3.9 mitmdump4.0 mitmdump脚本中使用requests模块发送请求 m ...

  7. php ci post 请求,CI框架中判断post,ajax,get请求的方法

    这篇文章主要介绍了关于CI框架中判断post,ajax,get请求的方法 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 CI框架当中并没有提供,类似tp框架中IS_POST,IS_A ...

  8. Django Ajax发送请求使用方法

    首先需要引入Jquery这个库 其次: 需要引入csrf_token 原因是因为django 表单认证需要csrf认证 最后,就是正常执行ajax发送请求 示例代码如下: <script src ...

  9. AJAX,SpringMVC,拦截器(Ajax发送请求 经过SpringMVC拦截器重定向其他页面失败)

    Ajax发送请求 经过SpringMVC拦截器重定向其他页面失败 借鉴出处 Ajax是通过异步请求后台,获取数据,局部刷新页面,因此,即使后台进行页面跳转的编码,前台请求完毕以后,只会执行ajax的回 ...

最新文章

  1. OpenGL之glMatrixMode函数的用法
  2. 设计模式之装饰模式20170726
  3. 【转】hadoop 报 Name node is in safe mode 错
  4. unity 3d物体描边效果_从零开始的卡通渲染描边篇
  5. 04.openssl编程——哈希表
  6. Spring XD用于数据提取
  7. java8新特性(5)— Optional 类
  8. c++ 二维数组 排序_【算法】排序算法之计数排序
  9. 创建一个delete触发器_基于 Django 信号机制实现类似触发器的效果
  10. 【解决方案】kafka: client has run out of available brokers to talk to (Is your cluster reachable?)
  11. 23种设计模式之适配器模式代码实例
  12. 深入理解JavaScript系列(25):设计模式之单例模式
  13. 【语音增强】基于matlab iir带阻滤波器语音增强【含Matlab源码 613期】
  14. FogROS2 使用 ROS 2 的云和雾机器人的自适应和可扩展平台
  15. Android获取经纬度以及地址信息
  16. [ZT]毁人不倦的应试教育(2)
  17. Linux ARM平台开发系列讲解(IIO子系统) 2.8.1 IIO驱动开发分析
  18. cont在c语言用法,在S7-1500中指令TSEND_C and TRCV_C如何使用?
  19. MySQL 替换手机号码中间4位为星号显示
  20. 上计算机课怎么备课,如何备课写教案

热门文章

  1. 【C语言笔记初级篇】第五章:操作符
  2. yum安装报错Protected multilib versions:
  3. Python subprocess命令行中文乱码
  4. Python 获取md5值(hashlib)
  5. golang中defer语句使用小结
  6. golang——strconv包常用函数
  7. OpenGLES 2.0 可编程渲染管线
  8. erlang---启动参数学习/研究
  9. Apache设置文件缓存时间
  10. a标签在ie6和ie7下面换行显示问题解析