【问题标题】:Post call from JS doesn't send data to the backend来自 JS 的 post 调用不会将数据发送到后端
【发布时间】:2020-02-21 11:01:58
【问题描述】:

尝试将登录数据从我的前端发送到 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('/');
        }
  })
});

【问题讨论】:

  • 哪里没通过??在您的$(document).ready 中打印??
  • 是的,js文件链接成功。问题出在我的 js 文件中,当我进行 Post 调用时,值没有被传递。你可以自己去看看github.com/BigDaddy-Zephyr/Hacker-news

标签: jquery node.js mongodb express pug


【解决方案1】:

在这个link你没有使用body-parser nodejs需要body parser来获取后端的body数据所以你必须像这样在你的app.js中安装和使用它

第一步:

npm i body-parser

第二步: 需要在 app.js 中

var bodyParser = require('body-parser');

第三步: 像这样使用它

app.use( bodyParser.json() );       // to support JSON-encoded bodies
// app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
//   extended: true
// })); 

在这之后你应该得到你的数据。

【讨论】:

  • 好的,安装后试了,不行。我做对了吗? github.com/BigDaddy-Zephyr/Hacker-news
  • 你必须在 app.use 中做 bodyparser 而不是 express。这里app.use(express.json()); app.use(express.urlencoded({ extended: false }));
猜你喜欢
  • 2019-06-20
  • 2011-10-13
  • 2020-09-12
  • 1970-01-01
  • 2017-12-11
  • 2021-02-03
  • 1970-01-01
  • 2014-04-09
  • 1970-01-01
相关资源
最近更新 更多