原因解析
HTTP 协议本身不直接支持数组
HTTP 协议中的表单数据(application/x-www-form-urlencoded 或 multipart/form-data)本质上是键值对结构,没有原生的数组类型。
解决
1、使用 重复相同键名
javascript
const formData = new FormData();
const materialTypes = [3, 4];
// 直接使用相同的键名
materialTypes.forEach(type => {
formData.append('material_type', type.toString());
});
大多数后端框架(如 Spring、Express)会自动将重复的键名解析为数组。
2、JSON 字符串格式
javascript
const formData = new FormData();
const materialTypes = [3, 4];
// 将数组转为JSON字符串
formData.append('material_type', JSON.stringify(materialTypes));
这种方式需要后端手动解析 JSON 字符串。
3、逗号分隔字符串
javascript
const formData = new FormData();
const materialTypes = [3, 4];
// 转为逗号分隔的字符串
formData.append('material_type', materialTypes.join(','));
后端需要用 split(',') 方法拆分字符串得到数组。