我正在使用Axios将POST请求发送到Node.js服务器,但是它不起作用。你有解决的办法吗?
我的代码如下所示:
server.js
:
app.post('/registration', (req, res) => {
console.log(req.body);
});
我的班级:
export default class Registration extends Component {
constructor(props) {
super(props);
this.handleSubmit = this.handleSubmit.bind(this);
this.state = {}
}
handleSubmit (e) {
e.preventDefault;
axios.post('/registration', {name: document.getElementById('name') }).then(res => {
console.log(res);
})
}
render() {
return (<form className="registrationForm">
<input type="text" name="name" id="name" required="required" placeholder="name"/>
<br/>
{/*<input type="text" name="email" required="required" placeholder="email"/>
<br/>
<input type="number" name="phoneNumber" required="required" placeholder="phoneNo"/>
<br/>
<input type="password" name="password" required="required" placeholder="pass"/>
<br/> */}
<button className="registerButton" onClick={this.handleSubmit}>register</button>
</form>)
};
}
答案 0 :(得分:1)
您的代码中存在各种问题
preventDefault
是方法。您需要调用它catch
更正后的handleSubmit
应该看起来像这样
handleSubmit (e) {
e.preventDefault(); // NB
const data = {name: document.getElementById('name').value /* NB */ };
axios.post('/registration', data).then(res => {
console.log(res);
}).catch(console.error) // now you could see what the actual problem is
}
此外,通常不建议在React up中使用DOM查找方法。您最好保留对输入的引用。
<input ... ref={input => this.name = input}/>
const data = {name: this.name.value };
答案 1 :(得分:0)
问题出在我仅在服务器端应用程序中未写的一行。
唯一要检查的是在文件中要求body-parser
之后放置以下行。
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));