Javascript 在方法内部调用另一个方法

Javascript 在方法内部调用另一个方法,javascript,reactjs,Javascript,Reactjs,首先,我是个新手,所以如果有什么需要改进的地方,请告诉我 我有一个用ajax将信息发送到php的登录表单,我想捕捉错误并更新一个p元素,尽管我找不到方法 当我用php发送的消息出错时,我想调用另一个方法,但它表示未定义 var APP = React.createClass({ getInitialState:function(){ return{user:'',pass:'',message:''}; }, setUser:function(e){

首先,我是个新手,所以如果有什么需要改进的地方,请告诉我

我有一个用ajax将信息发送到php的登录表单,我想捕捉错误并更新一个p元素,尽管我找不到方法

当我用php发送的消息出错时,我想调用另一个方法,但它表示未定义

   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);
             // <--
           }
         },
         // ...
      });