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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XHR加载失败:在AJAX请求上发布POST(在React中)相关的知识,希望对你有一定的参考价值。

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

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发送任何回复。不确定next(err)如何处理响应,但是如果找不到user,你想要将一些错误发送回客户端,例如:

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

以上是关于XHR加载失败:在AJAX请求上发布POST(在React中)的主要内容,如果未能解决你的问题,请参考以下文章

服务器返回重定向 (302) 后,iOS 设备上的 AJAX 或 XHR 请求失败,代码为 0

ajax:在jquery基础上又封装了一个ajax

Springboot ajax xhr 加载失败 404 错误

ajax基础3--使用原生xhr发起get,post请求

Chrome 在重定向时取消 CORS XHR

如果修改 XHR,则 JQuery AJAX 请求失败并出现 CORS 错误