当前位置: 首页 > news >正文

form表单提交前设置请求头request header及文件下载

需求:想要在form表单submit之前,设置一下请求头。

除了用Ajax发起请求之外,还可以使用FormData来实现,咱不懂就问。

1 问:FormData什么时间出现的?与ajax什么联系?

2 问:FormData使用方法

参考示例:

<form id="testForm"><input name="username" />
</form>

js:

let data= new FormData(document.getElementById('testForm'));
let xhrObj = new XMLHttpRequest();
xhrObj.open('POST', url, true);
xhrObj.setRequestHeader('自定义请求头', '值');
xhrObj.onload = function () {if (xhrObj.readyState === 4 && xhrObj.status === 200) {console.log(xhrObj.responseText);} else {// 请求错误}
};
xhrObj.send(data);

如果请求是一个下载文件(二进制流)的url,除了需要额外设置下responseType之外,还需要添加模拟触发下载的代码:

let data= new FormData(document.getElementById('testForm'));
let xhrObj = new XMLHttpRequest();
xhrObj.open('POST', downloadUrl, true);
xhrObj.setRequestHeader('自定义请求头', '值');
xhrObj.responseType = 'blob';
xhrObj.onload = function () {if (xhrObj.readyState === 4 && xhrObj.status === 200) {let content= xhrObj.getResponseHeader('Content-Disposition');let fileName = content.split(';')[1];fileName = decodeURI(fileName.split('=')[1]);let respObj= xhrObj.response;let downloadLink = document.createElement('a');downloadLink.href = URL.createObjectURL(respObj);downloadLink.download = fileName;downloadLink.click();} else {// 请求错误}
};
xhrObj.send(data);

http://www.xdnf.cn/news/141049.html

相关文章:

  • 线程怎么创建?Java 四种方式一网打尽
  • uniapp 仿企微左边公司切换页
  • FreeRTOS
  • 斗鱼娱乐电玩平台源码搭建实录
  • 短视频矩阵系统可视化剪辑功能开发,支持OEM
  • QT 连接数据库操作(15)
  • Pandas 数据导出:如何将 DataFrame 追加到 Excel 的不同工作表
  • 银发科技:AI健康小屋如何破解老龄化困局
  • MYSQL之数据类型
  • 【MySQL】3分钟解决MySQL深度分页问题
  • git 命令集
  • 【Web应用服务器_Tomcat】一、Tomcat基础与核心功能详解
  • 如何配置Spark
  • Spring-Framework源码环境搭建
  • 7.10 GitHub Sentinel CLI开发实战:Python构建企业级监控工具的5大核心技巧
  • JMeter添加HTTP请求默认值元件的作用详解
  • 百度打响第一枪!通用超级智能体时代,真的来了
  • 常用第三方库:flutter_boost混合开发
  • Android Kotlin 依赖注入全解:Koin appModule 配置与多 ViewModel 数据共享实战指南
  • 解决视频处理中的 HEVC 解码错误:Could not find ref with POC xxx【已解决】
  • 创建型设计模式之:简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式
  • 【QQMusic项目复习笔记——音乐管理模块详解】第四章
  • 1.10软考系统架构设计师:优秀架构设计师 - 练习题附答案及超详细解析
  • 时序数据库IoTDB在航空航天领域的解决方案
  • BiliNote:开源的AI视频笔记生成工具,让知识提取与分享更高效——跨平台自动生成结构化笔记,实现从视频到Markdown的智能转化
  • PT report_timing详解
  • 关于使用git init --bare 裸仓库的使用
  • 3.3 Spring Boot文件上传
  • 基于DrissionPage的表情包爬虫实现与解析(含源码)
  • python中的logging库详细解析