我想更新在后端使用 Node.js ,在前端使用 React 和 MySQL 开发的表行的数据关于数据库。
我的编辑课程:
constructor(props) {
super(props)
this.state = {
clients: [],
Prenom: '',
Nom: '',
FAX: '',
Telephone: '',
Email: '',
Adresse1: '',
Adresse2: '',
Code: props.match.params.Code
}
// this.logChange = this.logChange.bind(this);
this.handleEdit = this.handleEdit.bind(this);
}
handleEdit(event) {
//Edit functionality
//event.preventDefault()
var client = {
Prenom: this.state.Prenom,
Nom: this.state.Nom,
FAX: this.state.FAX,
Telephone: this.state.Telephone,
Email: this.state.Email,
Adresse1: this.state.Adresse1,
Adresse2: this.state.Adresse2
}
axios({
method: 'put',
url: "http://localhost:4000/app/editclient/" + this.props.match.params.Code,
data: client,
withCredentials: true,
headers: {
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json",
"Accept": "application/json",
}
}).then(function(response) { // empty form
this.setState({
Code: ""
});
this.setState({
Prenom: ""
});
this.setState({
Nom: ""
});
this.setState({
FAX: ""
});
this.setState({
Telephone: ""
});
this.setState({
Email: ""
});
this.setState({
Adresse1: ""
});
this.setState({
Adresse2: ""
});
}.bind(this)).catch(function(error) {
console.log(error);
});
event.preventDefault();
}
<Button type="submit" color="success" onClick={(event) => this. handleEdit(event)} >Modifier</Button>
我的路由器:
exports.editclient = function(req, res) {
var data = {
Prenom: req.body.Prenom,
Nom: req.body.Nom,
FAX: req.body.FAX,
Telephone: req.body.Telephone,
Email: req.body.Email,
Adresse1: req.body.Adresse1,
Adresse2: req.body.Adresse2,
};
var Code = req.params.Code
console.log(req.params);
// var Code = data.Code
connection.query("UPDATE clients set ? WHERE Code = ? ", [data, req.params.Code], function(error, results, fields) {
if (error) throw error;
else {
res.send(JSON.stringify(results));
console.log("Data is updated");
}
});
};
我的服务器:
router.put('/editclient/:Code', clients.editclient);
我使用URL为http://localhost:4000/app/editclient/2222
的Postman运行后端,效果很好,但是运行前端时,数据没有更新,我得到了:
我该如何解决?
答案 0 :(得分:2)
您尝试访问的localhost:4000
服务器未启用跨域资源共享(CORS)。这就是为什么它不起作用。
另一方面,它可与Postman一起使用,因为Postman是开发工具,而不是浏览器。因此,它不会受到未启用CORS的影响。
这里是easiest way to enable CORS support to your server, if you use Express for NodeJS。
使用node.js软件包cors。的 最简单的用法是:
var cors = require('cors') var app = express() app.use(cors())