Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XHR加载失败:在AJAX请求上发布(在React中)_Javascript_Ajax_Reactjs_Xmlhttprequest_Passport.js - Fatal编程技术网

Javascript XHR加载失败:在AJAX请求上发布(在React中)

Javascript XHR加载失败:在AJAX请求上发布(在React中),javascript,ajax,reactjs,xmlhttprequest,passport.js,Javascript,Ajax,Reactjs,Xmlhttprequest,Passport.js,我不认为React与此有关,但以防万一,这就是我的工作。在向/login提交AJAX请求时,我收到了错误XHR加载失败:POST。我正在尝试使用Passport JS创建登录路由,我知道该路由正在接收数据,因为它将console.log作为{email:'myemail',password:'mypassword'}和typeof returns对象 this.handleLoginSubmit = () => { let xml = new XMLHttpRequest();

我不认为React与此有关,但以防万一,这就是我的工作。在向/login提交AJAX请求时,我收到了错误XHR加载失败:POST。我正在尝试使用Passport JS创建登录路由,我知道该路由正在接收数据,因为它将console.log作为{email:'myemail',password:'mypassword'}和typeof returns对象

this.handleLoginSubmit = () => {
  let xml = new XMLHttpRequest();

  xml.open("POST", "/login", true);
  xml.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
  xml.send(JSON.stringify({email: this.state.email, password: this.state.password}));

  xml.onreadystatechange = () => {
    if(xml.readyState === 4) {
      console.log('here')
      console.log(xml.response);
    }
  }
}
以下是编辑路线:

router.post('/login', emailToLowerCase, function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) {
  console.log('error')
  return next(err);
}
if (!user) {
  return console.log('no user!')
}
req.logIn(user, function(err) {
  if (err) return next(err);
  console.log('logging in')
  return res.send(req.user)
});
})(req, res, next);
});
编辑以下表格:

<form id='login-form' className="small-form" className='nav-div' onSubmit={props.handleLoginSubmit}>
<div className='nav-div'>
  <li className="nav-item">
      <input type="email" required name="email" placeholder='Email' className='form-control' value={props.email} onChange={(e) => props.handleEmailChange(e.target.value)}/>
  </li>
  <li className="nav-item">
      <input type="password" required name="password" placeholder='Password' className='form-control' value={props.password} onChange={(e) => props.handlePasswordChange(e.target.value)}/>
  </li>
  <li className='nav-item'>
      <input type='submit' value='Login' />
  </li>
</div>
在代码中:

if (!user) {
  return console.log('no user!')
}
您没有向UI发送任何响应。不确定Nexter如何处理响应,但至少在找不到用户的情况下,您希望将一些错误发送回客户端,如:

if (!user) {
  console.log('no user!');
  return res.status( 404 ).json({ message: 'User not found' });
}

如果可能的话,我强烈建议使用FetchAPI,我发现XMLHTTPRequest接口让我感到困惑。fetch使用起来更简单。如果您在fetch方面仍然存在相同的问题,我可以帮助调试。@Sidney我最初打算使用fetch,但后来意识到它根本没有在IE中实现?所以你可以在IE中使用fetch。那么,错误是什么呢,你看过网络请求了吗?我本来打算使用fetch,但后来意识到它根本没有在IE中实现。。。箭头函数都不是,但您正在使用它们