前端axios请求form-data,status显示canceled

article/2025/9/17 8:45:08

前端axios请求form-data,status显示canceled

  • 起因
  • 改进&报错
  • 发现&解决问题

PS:前排提示本文略微啰嗦,解决办法在 “发现&解决问题” 部分。

起因

最近在网上跟着学习axios在vue中的使用,包含axios的基本数据请求,实例配置。在视频教学中,讲师分享了现成的可在本地运行的api进行基本数据请求,并以其中“content-type:application/json”类型的post请求作为例子讲解,实际还有“content-type:form-data”类型的api,于是本人想试试换个类型如何进行post请求。(应该算是准入门,可能有些用词不太专业望海涵,多多指教。)

先分享下成功的案例
首先是接口文档,
post请求成功的是第三个,"/contact/new/json"
接口文档
然后是vue中的代码


//		创建axios实例(写在created(){}中)this.instance = axios.create({baseURL: "http://localhost:9000/api",timeout: 1000, // 默认1000});
//		将post请求写在某个按钮的响应函数中onSubmit(evt) {evt.preventDefault(); //    阻止submit默认事件的发生
//		this.form是submit按钮响应后获取的实时表单内容console.log(evt);console.log("这是form" + this.form);
//      将获取的表单内容上传this.instance.post("/contact/new/json", this.form).then((res) => {console.log(res);console.log("Submit success");this.getList(); //     获取更新后的内容console.log("getList again success");this.onReset(); //    刷新表单中的控件console.log("Reset again success");}).catch(() => {console.log("提交请求失败");
//		这是接口文档中json类型的post请求方法
router.post('/contact/new/json', async(ctx) => {let newData = ctx.request.bodyconsole.log(newData)id++newData.id = iddata.push(newData)ctx.body = {code: 200,data: newData}
});

改进&报错

现在对form-data类型进行post请求。
首先是直接修改post请求的url为"/contact/new/form",意料之中,显示请求失败。上论坛查了一下,大概原因是form-data类型不同,需要进行格式转化,于是,有了下面一段代码,源自csdn某位老哥(ps:代码是正确的)。

 //    主要为了尝试form请求,于是将下列代码直接放入created(){}let name = 1;let tel = 666;this.instance({url: "/contact/new/form", //接口路径method: "post",data: { name, tel },headers: {"Content-Type": "application/x-www-form-urlencoded",},transformRequest: [function (data) {let ret = {};for (let it in data) {ret +=encodeURIComponent(it) +"=" +encodeURIComponent(data[it]) +"&";}console.log("transform success");return ret;},],}).then((res) => {console.log(res);});

发现&解决问题

意料之中,请求还是失败了,不过status中显示的是canceled
在这里插入图片描述
讲真,这个问题困扰了我两天,都没有解决,论坛上基本没有解决方式(可能是我查询的问题不太对,axios小白,很多东西也不了解),然后也问了不少网友老哥,最后删除一个参数解决了问题。
问题大概就出现在koaBody这个参数,删除这个参数即可。

const koaBody = require('koa-body')({multipart: true, // 允许上传多个文件
});
//form-data  
router.post('/contact/new/form', koaBody, async(ctx) => {let newData = ctx.request.body// console.log(ctx)console.log(ctx.request)console.log(newData)id++newData.id = iddata.push(newData)ctx.body = {code: 200,data: newData}
});

原因好像是: koa-body与koa-bodyparser一定不要同时使用!会报错!(链接)
目前还没有接触过koabody,所以。。。。。。(能跑就行了)
后来,我再回到原来的函数进行post请求,发现好像也可以直接进行请球,根本不需要header和transformRequest

//		将post请求写在某个按钮的响应函数中onSubmit(evt) {evt.preventDefault(); //    阻止submit默认事件的发生
//		this.form是submit按钮响应后获取的实时表单内容console.log(evt);console.log("这是form" + this.form);
//      将获取的表单内容上传this.instance.post("/contact/new/json", this.form).then((res) => {console.log(res);console.log("Submit success");this.getList(); //     获取更新后的内容console.log("getList again success");this.onReset(); //    刷新表单中的控件console.log("Reset again success");}).catch(() => {console.log("提交请求失败");

带上之前 参考form-data数据格式的帖子
链接: 详解vue axios用post提交的数据格式,axios post提交formdata的实例.
链接: 设置vue的axios请求格式为form-data方式.

最后附上小弟在了解axios的慕课,
虽然只看了一半,但也算是了解到一点点了。
链接: axios在vue中的使用.


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

相关文章

Http响应状态Status为canceled

现象 Ajax发送请求 在浏览器的Network发现 响应状态 变为 cnaceled 解决方案 1.表单提交时用的是自定义的button 调用ajax 和form表单中的属性action冲突, form action与绑定于button上的click事件会同时触发。form action将表单内容以get请求追加至当前url上&…

iOS xcode无故build canceled解决办法

iOS xcode无故build canceled解决办法 简单说下原因和处理方法,后面有发现具体原因再补充 原因: 代码更改确定没有影响到xcodeproj,但查看确发现project.pbxproj文件有变化,导致LaunchImage设定有变化 Bulid Setting 中查看影响到的是Launc…

跨域上传,请求状态canceled

上图展示: 解决方法: 仔细看看前端代码,哪个地方设置了timeout

关于浏览器请求队列和超时表现(canceled)

前端在向服务器 API 发送请求时一般会设置一个超时时间,避免超过期望时间的持续等待。 以 Axios 为例,一般会设置 timeout 请求超时选项。 但是浏览器判断超时并不是这么简单。 搭建环境 express axios 搭建 web 服务。 在项目目录下安装依赖&…

http请求响应状态为canceled

http请求响应状态为canceled问题 背景:vue3结合axios , 某个接口请求总是会出现canceled状态,如下图: 分析一下,可能是超时时间设置的问题,原始超时时间显示设置的是3s, 而这个接口响应时间大概有5~10s&a…

探究请求的接口响应status为canceled的原因

最近在和后端小伙伴调试接口的时候,有一个接口是响应status一直是canceled,导致接收不到数据或者说没有响应值返回,后端小伙伴看日志说是请求的数据已经返回了。正常的响应status应该是200,如果响应有误,响应的status应…

ajax表单提交造成请求canceled

表单提交中遇到了请求canceled问题 可以看到我们的button确认click事件是处于form表单内的, 当点击了button之后, form表单也有自己的默认表单提交事件, 这两个事件同时触发, from表单会将表单内容拼接到url后面, 导致页面重新加载, 会导致click事件中断,造成很长的延时, 所以出…

ItemTouchHelper.Callback 详解

ItemTouchHelper是在操作RecyclerView时,堆Item进行长按移动,左右滑动删除效果的一个辅助类,但是我们要考虑,为什么这个辅助类就可以实现移动跟左右删除Item的效果呢?我们的touch事件是怎么作用到RecyclerView的Item上…

JavaScript中的回调函数(callback)

前言 callback,大家都知道是回调函数的意思。如果让你举些callback的例子,我相信你可以举出一堆。但callback的概念你知道吗?你自己在实际应用中能不能合理利用回调实现功能? 我们在平时的学习中容易犯不去深究的病,功…

scrapy.Request callback不执行

上一篇博客介绍了Scrapy Post Request payload数据的问题,本篇记录一下scrapy.Request callback不执行的问题。 1、大家都说的解决方式,虽然没有解决我的问题,但是还是写到这里,算是一个总结: 1.在scrapy.Request方法里…

UVM: callback机制 uvm_callback和uvm_callbacks

callback机制 callback机制提高代码的可重用性,还用于构建异常的测试用例。 广义的callback机制有post_randomize(),pre_body(),post_body(), pre_do(), mid_do()等,它们提供了额外的接口给用户。 原理 以在driver中提供callback函数接口为…

SV和UVM的Callback例程

文章目录 前言一、SystemVerilog Callback例程二、UVM Callback例程总结 前言 记录SV和UVM的两个callback的例程,方便以后用的时候进行查阅。 一、SystemVerilog Callback例程 二、UVM Callback例程 总结 记录SV和UVM的callback例程。

ajax中的callback,ajax callback是什么

ajax的callback是什么? callback是ajax中的回调函数,是在服务器对一个请求对象作出响应时调用的函数。浏览器会在某个时刻”回调”这个函数,根据5种返回状态的情况处理ajax请求结果。 callback回调函数怎么理解? 想弄明白回调函数,首先的清楚地明白函数的规则。在javascri…

通俗易懂的讲解回调函数,保证让你看懂callback

什么是回调函数?相信很多人都似懂非懂,半懂不懂,今天就通俗易懂的讲解回调函数,让你能理解回调函数的大部分作用及意义。 目录 定义 形象的例子 代码解释 用处及完整代码例子 定义 先上常规的定义: 回调函数也是…

callback(回调函数)

先讲点题外话。 编程分为两类:系统编程(system programming)和应用编程(application programming)。所谓系统编程,简单来说,就是编写库;而应用编程就是利用写好的各种库来编写具某种…

Callback回调函数介绍(C语言)

目录 1. 回调函数的定义 2. 为什么要用回调函数 3. 怎么用回调函数 3.1 怎么使用没有参数的回调函数 3.2 怎么使用带参数的回调函数 1. 回调函数的定义 最近在工作中经常用到回调函数callback,总结一下。 先来看看维基百科对callback的解释:In co…

Callback函数详解

http://shiwawa.blog.hexun.com/9925417_d.html 一,回调函数 我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢…

《软件质量保证与测试》学习笔记【第一章 软件测试基本概念】

目录 前言为什么要进行软件测试什么是软件缺陷1.1 什么是软件测试1.2 软件测试与CMMI软件质量保证SQA与软件测试的关系 1.3测试用例1.3.1什么是测试用例测试用例的五大要素测试用例1.3.2测试用例的评价标准1.3.3测试用例设计的基本原则1.3.4测试用例模板 1.4测试环境1.4.1什么是…

群晖NAS教程(十)、利用Docker安装蚂蚁笔记(leanote)

为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客 群晖NAS教程(十)、利用Docker安装蚂蚁笔记(leanote) 蚂蚁笔记是一款特别棒的笔记软件,支持Markdown语法,是程序员必备的软件之一。下面我们就在群晖DS918+的机器上docker出来一个耍耍。 一、下载蚂蚁笔记(leanote)镜…

基于 Qt 框架的开源笔记软件 VNote

关注、星标公众号,直达精彩内容 来源:OSC开源社区 作者:tamlok VNote是一个受Vim启发开发的专门为Markdown而优化、设计的笔记软件。 授权协议:MIT 开发语言:C/C JavaScript HTML/CSS SHELL 操作系统:跨平台…