为什么我的FormData对象总是空的?

时间:2018-08-01 15:32:43

标签: typescript form-data

我试图像这样向formData添加一些数据:

params = {'code': 'h1'}
const formData: FormData = new FormData();
formData.append('parameters', JSON.stringify(params));

当我尝试像这样从formData获取数据时:formData['parameters']返回undefined 并且formData.entries.length0。 我查看了一些站点,发现这是这样做的方法。 我在做什么错了?

谢谢。

2 个答案:

答案 0 :(得分:2)

您的FormData对象实际上不是空的。在添加数据后尝试访问数据的方式是错误的。

对我来说,以下作品:

const params = {'code': 'h1'}
const formData = new FormData();
formData.append('parameters', JSON.stringify(params));

for (const entry of formData.entries())
{
    document.write(entry);
}

旁注:

  • 由于formData.entries()返回了interator object,因此没有length属性。
  • 也没有定义索引器[]。因此,您需要使用get() method检索值,如丹尼尔·贝克(Daniel Beck)在其答案中所示。

答案 1 :(得分:1)

您错误地声明了FormData对象(编辑:针对javascript。该问题最初不是用打字稿标记的,我对此并不熟悉)

const params={'code': 'h1'}
const formData = new FormData()
formData.append('parameters', JSON.stringify(params))
// confirm:
console.log(formData.get('parameters'))

...但是如果您要在formData上设置多个参数,而不仅仅是一个名为“ parameters”的参数,则可能需要这样做:

const params={
  'code': 'h1',
  'foo': 'bar'
}

const formData = new FormData()
Object.keys(params).forEach((k) => {
  formData.append(k, params[k])
})

// confirm:
console.log(formData.get('code'))
console.log(formData.get('foo'))