我有三个数组,我必须通过Axios将它们发送到formdata中。该数组的键是 record [] 。但是我有三个数组,而我只有一个键如何在同一个键上发送三个数组 record [] 这是我的代码
const params = new FormData();
params.append("record[]", this.props.addedOrders);
params.append("record[]", this.props.addedCustomers);
params.append("record[]", this.props.addedRecovery);
答案 0 :(得分:2)
可以使用FormData
将多个值添加到同一键。来自doc:
与常规表单数据一样,您可以附加多个具有相同名称的值。例如(并通过在名称中添加[]来与PHP的命名约定兼容):
这是一个例子:
const params = new FormData();
params.append('record[]', 1);
params.append('record[]', 2);
params.append('record[]', 3);
console.log(params.getAll('record[]'));
由于您的问题要求将 array 附加到FormData
,所以值得指出的是FormData.append
适用于字符串和blob,其他类型也将转换为字符串。 / p>
如果发送的值不同于String或Blob,它将自动转换为String。
因此,如果您尝试追加数组,则默认情况下会将其转换为以逗号分隔的列表。对于将序列化为[object Object]
之类的对象的数组。您也可以使用例如将每个数组编组为字符串JSON.stringify
,然后将数据转换回服务器端,但这是一种实现选择。
const params = new FormData();
params.append('record[]', JSON.stringify([{name: 'joe'}, {name: 'bob'}]));
params.append('record[]', JSON.stringify([{name: 'rand'}, {name: 'smith'}]));
console.log(params.getAll('record[]'));
所有这些,我想说您的问题出在其他地方。