前言:

最近遇到的最多的问题就是表单提交数据格式问题了。

常见的三种表单提交数据格式,分别举例说明:(项目是vue的框架)

1.application/x-www-form-urlencoded

提交表单方法,js代码如下:

submitForm() {
let data = 'title="标题"&content="内容"&pic[]="image1"&pic[]="image2"&pic[]="image3"'
axios({
url: '<{url action=topc_ctl_member_article@publishArticle}>',
method: 'POST',
data: data,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(res => {
console.log(res)
})
}

请求发送成功,看network headers信息,如图

这里显示的是Form Data,数据格式如图

这是一个基本的示例。但是在项目中,我们的表单数据往往不是这么写死的。我们需要收集数据。收集数据的方式有几种。

默认表单提交时会自动收集数据,这个不说了。我们更多的是要走ajax提交。

1.new FormData()对象保存表单数据

Html代码:

<form ref="publishForm" action="">
<input type="text" v-model="publishFormData.title" name="title" placeholder="请输入标题">
<textarea name="content" id="" v-model="publishFormData.content" placeholder="这一刻想说什么...">
</textarea>
<input hidden type="text" name="pics[]" :value="item.url">
<input hidden type="text" name="shop_id" :value="publishFormData.shop_id">
<input hidden type="text" name="item_id" :value="publishFormData.item_id">
<a href="javascript:;" class="btn-publish" @click="submitForm">发布文章</a>
</form>

此段代码只展示关键内容,其余都省略了。。

js代码,vue methods里面:

submitForm() {
let data = new FormData(this.$refs.publishForm)
axios({
url: '<{url action=topc_ctl_member_article@publishArticle}>',
method: 'POST',
data: data,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(res => {
    console.log(res)
})
}

在new FormData()里面传入dom元素,就能像默认提交表单那样收集到数据。不过注意,每个框架获取dom元素的方法不一样。

以前用jquery,是这样写的

let data = new FormData($('form'))

vue获取dom,用$refs

let data = new FormData(this.$refs.publishForm)

network headers 信息如下:

这里奇怪了,设置了 'Content-Type': 'application/x-www-form-urlencoded' 竟然无效,还是显示multipart/form-data,莫非FormData对象有强制设置content-type功能??

2.multipart/form-data

据说表单上传文件时需要使用这种格式

3.application/json

Axios默认请求头类型是application/json

js代码如下:

submitForm() {
let data = {
title: '标题',
content: '内容',
pics: ['image1', 'image2', 'image3']
}
axios({
url: '<{url action=topc_ctl_member_article@publishArticle}>',
method: 'POST',
data: data,
headers: {
'Content-Type': 'application/json'
}
}).then(res => {
console.log(res)
})
}

network headers 如图:

4.最后说下axios post请求时把对象obj数据转为formdata的方法

axios({
url: '<{url action=topc_ctl_member_article@publishArticle}>',
method: 'POST',
data: fd,
transformRequest: [function (data) {
let ret = ''
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret
}],
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(res => { })

参考文章:axios 将post请求时把对象obj数据转为formdata

我写技术博客的目的主要是整理自己做过的功能,主要是写给自己看,当然,我尽量写清楚。

若给你造成误解,我很抱歉。若给你带来帮助, 我很欣慰。

有疑问欢迎交流 扣扣:2136946914

表单提交数据格式form data的更多相关文章

  1. jQuery Form 表单提交插件----Form 简介,官方文档,官方下载地址

     一.jQuery Form简介 jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery Form有两个核心方法 -- ajaxF ...

  2. 表单提交 fastadmin form

    1.引入form组件 require(['form'], function(Form){}); 2.生成form元素 3.绑定事件之验证(也可以绑定总表单事件Form.events.bindevent ...

  3. layui表单提交使用form.on('submit(sub)',function (){}) 使用ajax请求时回调不执行的原因及解决方法

    ayui使用官方的表单模块form.on('submit(sub)',function (){}) 提交,使用ajax请求向后台请求一个执行结果,根据结果进行处理,出现回调无法执行,并且页面出现了刷新 ...

  4. Jquery组织Form表单提交之Form submission canceled because the form is not connected

    有时候导出Excel时需要根据某些条件筛选数据,然后将数据通过NPOI生成Excel并导出.组织数据时可以通过放到一个表单中,某些场景是使用脚本(如:jquery)组织一个form(通过字符串拼接), ...

  5. easyui表单提交验证form

    方式一,不需要考虑jquery.easyui.min.js版本 <script> $(function () { //针对 设置 novalidate:true $('.validateb ...

  6. jQuery Form 表单提交插件-----formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的 应用

    一.jQuery Form的其他api  1.  formSerialize 将表单序列化成查询串.这个方法将返回一个形如: name1=value1&name2=value2的字符串.是否可 ...

  7. Linux curl 模拟form表单提交信息和文件

    Linux curl 模拟form表单提交信息和文件   curl是一个命令行方式下传输数据的开源传输工具,支持多种协议:FTP.HTTP.HTTPS.IMAP.POP3.TELNET等,功能超级强大 ...

  8. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

  9. jqPaginator分页(ajax用法和form表单提交用法)

    一般使用方法 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

随机推荐

  1. 用C#调用Lua脚本

    用C#调用Lua脚本 一.引言 学习Redis也有一段时间了,感触还是颇多的,但是自己很清楚,路还很长,还要继续.上一篇文章简要的介绍了如何在Linux环境下安装Lua,并介绍了在Linux环境下如何 ...

  2. 5.Maven之(五)Maven仓库

    转自:https://blog.csdn.net/oonmyway1234/article/details/82315777 本地仓库 Maven一个很突出的功能就是jar包管理,一旦工程需要依赖哪些 ...

  3. 51.cgi网站后门

    运行截图: html开发: <html> <body> <form id="form" name="form" method=&q ...

  4. Java中Webservice调用.NET天气接口生成客户端异常

    学习webservice时候有个例子调用公网的天气预报接口实现查询天气的功能.然而在使用命令编译客户端代码的时候出错了.大概看了一下网上说是需要将将文件中所有出现的 < s:element re ...

  5. Dubbo简易学习

    0.  Dubbo简易介绍 DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000, ...

  6. netstat -p 显示 -

    http://4735839.blog.51cto.com/4725839/1418945 https://yq.aliyun.com/articles/63060

  7. BZOJ 1696 [Usaco2007 Feb]Building A New Barn新牛舍 数学

    题意:链接 方法:数学+模拟 解析: 首先这类问题不是第一次见了,所以直接知道拿x的中位数.y的中位数. 这题就是讨论情况很的烦. 题中有个限制,给出待求和的点不能选取. 所以假设奇数个点,求出x中位 ...

  8. thinkphp5 left join

    thinkphp5 left join 一.总结 1.作用:left join就是即使不匹配也返回左表中的数据 2.join使用通式:object join ( mixed join [, mixed ...

  9. index action分析

    上一篇从结构上分析了action的,本篇将以index action为例仔分析一下action的实现方式. 再概括一下action的作用:对于每种功能(如index)action都会包括两个基本的类* ...

  10. POJ 1737 Connected Graph (大数+递推)

    题目链接: http://poj.org/problem?id=1737 题意: 求 \(n\) 个点的无向简单(无重边无自环)连通图的个数.\((n<=50)\) 题解: 这题你甚至能OEIS ...