[英]fetch API not sending data via post
我在使用 Fetch API 通过 post 发送数据时遇到问题,服务器只收到一个空的 JSON。 有人能帮我吗? 基本上,我正在更新状态数据并发送到 API。
提交数据 = 请求。
submitedData = async (event) => {
event.preventDefault();
let data = {produto: this.state.produto, preco: this.state.preco};
data = JSON.stringify(data);
const result = await fetch('/api/add', {
method: 'post',
body: data
});
const body = await result.json();
if(result.status == 200){
//if all that's ok
}else{
console.log(body.message);
}
}
changeInput = 改变状态。
changeInput = (event) => {
const field = event.target.name;
this.setState({ [field]: event.target.value });
}
render = 触发提交的数据。
render(){
return(
<Grid>
<Row>
<Col sm={12}>
<Form horizontal onSubmit={this.submitedData} >
<FormGroup>
<Col sm={1}> <b> Produto: </b> </Col>
<Col sm={8}>
<FormControl type="text" placeholder="Produto" value={this.state.produto} onChange={this.changeInput} name="produto" required/>
</Col>
</FormGroup>
<FormGroup>
<Col sm={1}> <b> Preço: </b> </Col>
<Col sm={8}>
<FormControl type="number" placeholder="Preço" value={this.state.preco} onChange={this.changeInput} name="preco" required />
</Col>
</FormGroup>
<FormGroup>
<Col smOffset={1} sm={8}>
<Button type="submit" bsStyle="success"> Salvar </Button>
</Col>
</FormGroup>
</Form>
</Col>
</Row>
</Grid>
);
}
应用程序接口
var express = require('express');
var Crud = require('./database/Crud');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.post('/api/add', function(req, res){
res.send(req.body);
console.log(req.body); // {} json empty
});
您需要对请求正文进行字符串化并添加 JSON 内容类型标头。
const result = await fetch('/api/add', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data)
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.