【发布时间】:2018-02-18 08:04:45
【问题描述】:
我遇到了这个奇怪的问题,我有两个用 react 构建的表单,一个用于注册,另一个用于登录。 我正在发出一个 ajax 请求,将注册表单的内容传递给快速服务器,正文被解析,我从 req.body 获取内容没有任何问题, 但是,当我为登录表单做同样的事情时,我的后端服务器没有收到电子邮件和密码之类的内容,但是如果使用邮递员完成它就可以正常工作, 下面是从 react 使用 ajax 进行 api 调用的给定代码
login: function (e) {
e.preventDefault();
console.log(this.refs.loginpassword.value);
var userdata = {
"email": this.refs.loginusername.value,
"password": this.refs.loginpassword.value
}
console.log(userdata);
$.ajax({
type: "POST",
contentType:"application/json",
datatype:"jsonp",
Data: userdata,
url: "http://localhost:5000/signin",
success: function (data) {
console.log(data);
},
error: function (err) {
console.log(err);
}
})
},
如果我将用户数据记录到控制台,我可以看到字段已填充但后端未收到它们,以下是后端快速服务器上编写的代码
app.post('/signin', function(req,res,next){
console.log(req.body);
passport.authenticate('local-login',{
successRedirect:'/profile',
failureRedirect:'/failureredirect',
failureFlash:true
})(req,res,next)}
这会重定向到路由“/failureredirect”而没有点击登录策略检查后我发现正文是空白的,这里没有收到任何内容,但是如果我向邮递员请求相同的路由,则身份验证过程运行良好,这里出了什么问题。 请记住,我已经配置了使用 express 服务器很好地解析的正文,因此它适用于注册但不适用于登录。
【问题讨论】:
-
尝试将
type: "POST"更改为method: "POST"。此外,听起来类似于stackoverflow.com/questions/48828554/… -
没有运气将 type:"POST" 更改为 method:"POST"
标签: node.js ajax reactjs authentication passport.js