jquery - 来自 JS 的 post 调用不会将数据发送到后端
问题描述
尝试将登录数据从我的前端发送到 mongodb。
所以我的 js 文件从 pug 文件中获取 id 并传递值并进行 post 调用,该调用发送登录 id 并传递。
然后路由 /postlist 获取该值并呈现它。
我得到的错误是没有值被传递给 ajax 调用,即使 id 和 pass 的值在我执行 console.log 时显示
这是我的哈巴狗文件
script(type='text/javascript' src="http://code.jquery.com/jquery-latest.js")
script( type= 'text/javascript',src='/javascripts/script.js')
form( id='formSignIn')
div.form-group
label(for='name') Id:
input#name.form-control(type='text', placeholder='id' name='name')
div.form-group
label(for='pw') Password:
input#password.form-control(type='password', name='password')
button.btn.btn-primary(type='submit', id='submit') Sign In
这是我的js代码
$(document).ready(function(){
console.log("hi");
var name,password;
$("#submit").click(function(){
id= $("#name").val();
// console.log("/////////",name);
pass=$("#password").val();
console.log("$$$$$$$$$$$$$", id, pass)
$.post("/signup", {name: id, password: pass} ,function(data){
alert( "Data Loaded: " + data );
}).fail(function(){
console.log("error");
// console.log("@@@@@@@@@@@@@@@@@");
localStorage.setItem('user',id);
});
})})
这是我在 router/index.js 中的代码(在这个项目中使用 express)
router.post('/login', function(req,res){
console.log("fhfdghd")
var db = req.db;
// Set our collection
var userCollection = db.collection('user');
// Get our form values. These rely on the "name" attributes
console.log("BODY", req.body)
var id = req.body.name;
var password = req.body.password;
var query = {"id": id, "password": password}
db.collection('user').findOne(query, function(err, user){
if(err) {throw new Error(err);}
else if(!user){
console.log('Not found');
}
else{
sses=req.session;
sses.user=req.body.name;
console.log('Found!');
res.end('done');
res.redirect('/');
}
})
});
解决方案
在此链接中,您没有使用 body-parser nodejs 需要 body parser 才能在后端获取正文数据,因此您必须像这样在 app.js 中安装和使用它
步骤1:
npm i body-parser
第二步: 在 app.js 中需要
var bodyParser = require('body-parser');
Step3: 像这样使用它
app.use( bodyParser.json() ); // to support JSON-encoded bodies
// app.use(bodyParser.urlencoded({ // to support URL-encoded bodies
// extended: true
// }));
在此之后,你应该得到你的数据。
推荐阅读
- python - 每次重新启动程序后,Python Tkinter 的渲染速度都会变慢
- wpf - WPF 应用程序在 Jenkins 服务中运行但不是作为普通用户时崩溃
- java - Java8+:将匿名对象传递给方法
- amazon-web-services - 手动管理 SQS 队列与 Lambda 触发器
- c - 卸载 LD_PRELOAD 而不重启进程
- c# - 在 UWP 中加载 WebView 时应用程序无响应
- pandas - 返回 dtype bool 系列中最后一次出现的 True
- python - 使用数据透视函数后的熊猫数据数据框过滤
- tensorflow - 使用 Tensorboard 时的分布问题
- python - n拼图python中的曼哈顿距离启发式