Javascript 在方法内部调用另一个方法
首先,我是个新手,所以如果有什么需要改进的地方,请告诉我 我有一个用ajax将信息发送到php的登录表单,我想捕捉错误并更新一个p元素,尽管我找不到方法 当我用php发送的消息出错时,我想调用另一个方法,但它表示未定义Javascript 在方法内部调用另一个方法,javascript,reactjs,Javascript,Reactjs,首先,我是个新手,所以如果有什么需要改进的地方,请告诉我 我有一个用ajax将信息发送到php的登录表单,我想捕捉错误并更新一个p元素,尽管我找不到方法 当我用php发送的消息出错时,我想调用另一个方法,但它表示未定义 var APP = React.createClass({ getInitialState:function(){ return{user:'',pass:'',message:''}; }, setUser:function(e){
var APP = React.createClass({
getInitialState:function(){
return{user:'',pass:'',message:''};
},
setUser:function(e){
this.setState({user:e.target.value});
},
setPass:function(e){
this.setState({pass:e.target.value});
},
setErrors:function(errors){
alert('calling');
this.setState({message:errors});
},
handleForm:function(e){
e.preventDefault();
var username = this.state.user;
var password = this.state.pass;
$.ajax({
'url':'prg/loginJSON.php',
'type':'POST',
data:{'username':username,'password':password},
success:function(result){
if(result.error){
window.location.href="http://localhost/learnSeries/home.html";
sessionStorage.setItem('cookiePass',result.token);
}
else{
this.setErrors(result.message);
}
},
error:function(xhr){
console.log('error ajax' +xhr.responseText);
}
});
},
render:function(){
return(
<form onSubmit={this.handleForm} id="loginForm" method="post" action="" role="form">
<label className="is-required">User</label>
<input type="text" name="username" onChange={this.setUser} id="username" required placeholder="User"></input>
<label className="is-required">Password</label>
<input type="password" name="password" onChange={this.setPass} id="password" required placeholder="Password"></input>
<input type="submit" value="Log In"></input>
<p>{this.state.message}</p>
</form>
)
}
});
React.render(<APP />, document.getElementById('site'));
var-APP=React.createClass({
getInitialState:函数(){
返回{用户:'',传递:'',消息:'};
},
设置用户:函数(e){
this.setState({user:e.target.value});
},
setPass:函数(e){
this.setState({pass:e.target.value});
},
setErrors:函数(错误){
警报(“呼叫”);
this.setState({message:errors});
},
手柄形式:功能(e){
e、 预防默认值();
var username=this.state.user;
var password=this.state.pass;
$.ajax({
'url':'prg/loginJSON.php',
'type':'POST',
数据:{'username':用户名,'password':密码},
成功:功能(结果){
if(result.error){
window.location.href=”http://localhost/learnSeries/home.html";
sessionStorage.setItem('cookiePass',result.token);
}
否则{
this.setErrors(result.message);
}
},
错误:函数(xhr){
log('error ajax'+xhr.responseText);
}
});
},
render:function(){
返回(
使用者
暗语
{this.state.message}
)
}
});
React.render(,document.getElementById('site'));
在成功
函数中的此
与使用$.ajax
启动请求时不同。您必须记住它并在以后(在我的
handleForm:函数(e){
// ...
// -->
var self=这个;
//
self.setErrors(result.message);
//或者success:function(result){}.bind(this)
,然后您可以在函数中使用this
(自模式在react代码中不如.bind常见)。
handleForm:function(e){
// ...
// -->
var self = this;
// <--
$.ajax({
// ...
success:function(result){
if(result.error){
// ...
}
else{
// -->
self.setErrors(result.message);
// <--
}
},
// ...
});