FormData.append(“key”, “value”) 不起作用

2022-08-30 05:37:30

你能告诉我这有什么问题吗:

var formdata = new FormData();
formdata.append("key", "value");
console.log(formdata);

我的输出看起来像这样,我找不到我的“键”-“值”对

FormData
*__proto__: FormData
**append: function append() { [native code] }
***arguments: null
***caller: null
***length: 0
***name: "append"
***prototype: append
***__proto__: function Empty() {}
*constructor: function FormData() { [native code] }
**arguments: null
**caller: null
**length: 0
**name: "FormData"
**prototype: FormData
**toString: function toString() { [native code] }
*__proto__: Object
**__proto__: Object
**__defineGetter__: function __defineGetter__() { [native code] }
**__defineSetter__: function __defineSetter__() { [native code] }
**__lookupGetter__: function __lookupGetter__() { [native code] }
**__lookupSetter__: function __lookupSetter__() { [native code] }
**constructor: function Object() { [native code] }
**hasOwnProperty: function hasOwnProperty() { [native code] }
**isPrototypeOf: function isPrototypeOf() { [native code] }
**propertyIsEnumerable: function propertyIsEnumerable() { [native code] }
**toLocaleString: function toLocaleString() { [native code] }
**toString: function toString() { [native code] }
**valueOf: function valueOf() { [native code] }

我无法理解!昨天它工作得很好,今天我的头撞了这么多次键盘!火狐浏览器,Chrome,两者相同:/


答案 1

Chrome 50+ 和 Firefox 39+ (resp. 44+) 中的新增功能:

  • formdata.entries()(结合以实现可调试性)Array.from()
  • formdata.get(key)
  • 以及更多非常有用的方法

原答:

我通常做的是“调试”一个对象,只是发送它(任何地方!)并检查浏览器日志(例如。Chrome devtools' Network tab)。FormData

你不需要一个/相同的Ajax框架。您不需要任何详细信息。只需发送:

var xhr = new XMLHttpRequest;
xhr.open('POST', '/', true);
xhr.send(data);

容易。


答案 2

你说它不起作用。你期待发生什么?

没有办法从FormData对象中获取数据;它只是供您用于与 XMLHttpRequest 对象(对于 send 方法)一起发送数据。

大约五年后更新:在一些较新的浏览器中,这不再是真的,除了将数据填充到其中之外,您现在还可以看到提供的数据。有关详细信息,请参阅接受的答案FormData