【发布时间】:2018-02-27 09:09:28
【问题描述】:
当用户点击我的表单的提交按钮时,handleSubmit 被调用。因此,我想在我的 ajax 调用中正确调用 e.preventDefault() ,由于 ajax 的异步性质,这是不可能的。我该如何解决这个问题?
class FormRegister extends React.Component {
constructor(props) {
super(props);
this.state = {
username: '',
email: '',
}
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(e) {
// some code here
// Check for username or email already exists
$.ajax({
type: 'POST',
url: '/api/checkEmailUsername',
data: {
username: this.state.username,
email: this.state.email
}
}).then(function(incomingJSON) {
console.log('incomingJSON:', incomingJSON);
if (incomingJSON.error) {
e.preventDefault();
}
}
});
}
【问题讨论】:
-
你可以
apply和call -
你的想法是错误的。 AJAX 是异步的,所以你不能随便打电话给
e.preventDefault;您需要在 AJAX 代码之前调用它。
标签: javascript ajax reactjs