FormData Returns react 中表单提交的空数据
FormData Returns empty data on form submission in react
我试图在提交表单时使用 new FormData()
构造函数获取表单数据键值对对象。但它总是 returns 空数据。
我已经尝试 event.persist()
避免反应事件池,但没有任何效果
export default class Test extends React.Component {
constructor(props) {
super(props);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(event) {
event.preventDefault();
const target = event.target;
const data = new FormData(target);
console.log(data)
}
render() {
return (
<form onSubmit={this.handleSubmit}>
<label htmlFor="username">Enter username</label>
<input id="username" name="username" type="text" />
<button>Send data!</button>
</form>
);
}
}
我需要一个包含以下格式的表单数据的对象
{ "username": "Value" }
我认为你需要通过循环来获取它。试试这个
var formData = new FormData(target);
for (var [key, value] of formData.entries()) {
console.log(key, value);
}
希望有用。
handleSubmit应该是这样的
handleSubmit(event) {
event.preventDefault();
const data = new FormData(event.target);
fetch('my-api', {
method: 'POST',
body: data,
});
}
表单提交后,在网络选项卡中,您将找到带有 key-value 的表单数据。
如果要访问单个值,
const username = data.get('username');
在我的例子中,我不得不使用这个通用代码片段
const form = event.target;
const data = {};
for (let i=0; i < form.elements.length; i++) {
const elem = form.elements[i];
data[elem.name] = elem.value
}
我不知道这种行为的原因,但可能是因为表单内的输入不再是 DOM 的一部分
其中之一
如果你使用 React,只需使用 htmlType 标签
<Form.Item>
<Button type="primary" htmlType="submit" />
Submit action
</Button>
</Form.Item>
我试图在提交表单时使用 new FormData()
构造函数获取表单数据键值对对象。但它总是 returns 空数据。
我已经尝试 event.persist()
避免反应事件池,但没有任何效果
export default class Test extends React.Component {
constructor(props) {
super(props);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(event) {
event.preventDefault();
const target = event.target;
const data = new FormData(target);
console.log(data)
}
render() {
return (
<form onSubmit={this.handleSubmit}>
<label htmlFor="username">Enter username</label>
<input id="username" name="username" type="text" />
<button>Send data!</button>
</form>
);
}
}
我需要一个包含以下格式的表单数据的对象
{ "username": "Value" }
我认为你需要通过循环来获取它。试试这个
var formData = new FormData(target);
for (var [key, value] of formData.entries()) {
console.log(key, value);
}
希望有用。
handleSubmit应该是这样的
handleSubmit(event) {
event.preventDefault();
const data = new FormData(event.target);
fetch('my-api', {
method: 'POST',
body: data,
});
}
表单提交后,在网络选项卡中,您将找到带有 key-value 的表单数据。
如果要访问单个值,
const username = data.get('username');
在我的例子中,我不得不使用这个通用代码片段
const form = event.target;
const data = {};
for (let i=0; i < form.elements.length; i++) {
const elem = form.elements[i];
data[elem.name] = elem.value
}
我不知道这种行为的原因,但可能是因为表单内的输入不再是 DOM 的一部分
其中之一 如果你使用 React,只需使用 htmlType 标签
<Form.Item>
<Button type="primary" htmlType="submit" />
Submit action
</Button>
</Form.Item>