表单提交数据格式form data

前言:

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

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

1.application/x-www-form-urlencoded

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

submitForm() {
  let data = ‘title="标题"&content="内容"&pic[]="image1"&pic[]="image2"&pic[]="image3"‘
  axios({
    url: ‘<{url [email protected]}>‘,
    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 [email protected]}>‘,
    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 [email protected]}>‘,
    method: ‘POST‘,
    data: data,
    headers: {
      ‘Content-Type‘: ‘application/json‘
    }
  }).then(res => {
    console.log(res)
  })
}

network headers 如图:

原文地址:https://www.cnblogs.com/basic0001/p/10279012.html

时间: 2024-08-03 15:21:03

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

表单提交 fastadmin form

1.引入form组件 require(['form'], function(Form){}); 2.生成form元素 3.绑定事件之验证(也可以绑定总表单事件Form.events.bindevent(form)) Form.api.bindevent(form, success, error, submit); 4.提交 //提交表单的方法,在表单完成验证后进行提交 Form.api.submit(form, success, error, submit); 例子: Form.api.bind

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

 一.jQuery Form简介 jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery Form有两个核心方法 -- ajaxForm() 和 ajaxSubmit(), 它们集合了从控制表单元素到决定如何管理提交进程的功能.另外,插件还包括其他的一些方法: formToArray().formSerialize().fieldSerialize().fieldValue().clearForm().clearFields(

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

有时候导出Excel时需要根据某些条件筛选数据,然后将数据通过NPOI生成Excel并导出.组织数据时可以通过放到一个表单中,某些场景是使用脚本(如:jquery)组织一个form(通过字符串拼接),然后将这个from的转换成jquery对象或者Dom对象,再调用对应的submit方法. 例子如下,有一个html页面 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" co

表单提交验证form

方式一,不需要考虑jquery.easyui.min.js版本 <script> $(function () { //针对 设置 novalidate:true $('.validatebox-text').bind('blur', function () { $(this).validatebox('enableValidation').validatebox('validate'); }); $("#btn_ok").click(function () { //启用 $

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

curl是一个命令行方式下传输数据的开源传输工具,支持多种协议:FTP.HTTP.HTTPS.IMAP.POP3.TELNET等,功能超级强大. 我今天想说的是程序开发中常用的模拟Form提交 1.GET提交 特别简单直接写url里面 2.POST提交    通过 --data/-d 方式指定使用POST方式传递数据 3.模拟form表单提交文件  --form/-F 模拟form表单提交文件 这个命令超级好用,再也不用为了写上传接口,而被迫写一个Form表单了 "[email protecte

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

一般使用方法 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="res/bootstrap.min.css"/> </head> <body style=&quo

表单提交:button input submit 的区别

http://harttle.com/2015/08/03/form-submit.html 最近项目代码中的表单提交的方式已经百花齐放了,现在用这篇文章来整理一下不同表单提交方式的区别,给出最佳实践.先给结论: 建议使用button[type=submit]来提交表单,而不是input: 只有单行文本控件时,回车会引发表单提交: 通过onsubmit事件可阻止表单提交. input[type=submit] 这是最常见的提交方式.不多说了,看图: 图中可以看到点击提交按钮后的URL是/?key

表单提交中的input、button、submit的区别(转来学习)

最近项目中用了很多的表单提交,发现input.button.submit甚至回车键都可以引发表单提交,下面将分别验证他们在使用中的区别. 1.input[type=submit] 我们直接来看例子: 代码如下: <form> <input name="name"> <input type="submit" value="提交"> </form> 其中点击按钮后的url变为?name=22222222

ajax传递数组、form表单提交对象数组

在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致,那么传值就没有什么问题.不过,在前几天的开发任务中,遇到了需要批量传递对象,也就是需要传递对象数组,在此做个总结.今天又遇到需要向后台传递数组,便一并写下来吧. 1.ajax传递普通数组 前台代码 var deleteNum= [];//定义要传递的数组 deleteNum.push("1"); deleteNum.push(&qu