JavaScript,如何使用FormData模拟/打包一个表单数据?
发布于 作者:苏南大叔 来源:程序如此灵动~

本文描述一个非常规的表单应用方式FormData
,常规的form
都是利用action
来提交数据的。那么,本文中使用FormData
来打包表单数据,进而可以使用ajax
等技术来提交数据。FormData
可以从普通的form
来生成,也可以无表单实物直接通过js
操作获得。

苏南大叔的程序如此灵动博客,记录苏南大叔和计算机代码的故事。测试环境:谷歌浏览器。
从已有表单初始化
这里就准备一个常见的表单,作为本文的标的物。
所有的输入元素都需要有name
属性,否则无法访问到值。这些输入项的name
就是FormData
的key
值。

js
直接模拟表单
new FormData(obj)
传入一个表单对象obj
,就可以直接获得这个表单内的所有的带name
的输入项。如果没有传入obj
的话,就是空的FormData
对象。
可以通过.set()
,.append()
来管理FormData
内的元素。当然,还有很多其他的方法对元素进行操作。但是,这并不是本文关心的内容。
函数 | 说明 |
---|---|
.set(name,value) | 添加/修改一组数据 |
.append(name,value) | 叠加一组数据,并不修改已有的同名数据 |

其实,在FormData
内,并不关心input
的type
,只关心name
和value
。而对于复选框checkbox
,是允许存在同名数据的。所以,可以使用.append()
来模拟这种情况。
ajax
提交表单【待测】
实际测试结果显示:这里的代码发送给php
后端的时候,是可以正常使用的。但是,发给python
或者nodejs
的后端,或多或少都有一些问题,主要的症结在于发送数据时的contentType
。如果有需要,可以在着重在这个角度进行调试。
这里使用传统的XMLHttpRequest
来模拟这个表单提交。

当然,也可以使用jquery
来提交数据。
php
接收表单
为了查看提交的数据效果,这里使用php
作为后端处理逻辑代码做测试。
参考文字:
https://newsn.net/say/php-json.html
结束语
更多JavaScript
文章,请点击苏南大叔的博客:


