【问题标题】:How do I render a handlebars layout in node.js from a button?如何通过按钮在 node.js 中呈现车把布局?
【发布时间】:2017-11-27 21:37:20
【问题描述】:

这是我遇到的一个非常奇怪的问题。

我有一个登录表单,此登录表单验证您的数据并在登录成功时呈现个人资料布局,如果登录失败则呈现注册页面。

exports.logIn = function (req, res, data) {
  var username = req.body.username.toString();
  var password = req.body.password.toString();
  connection.connection();
  global.connection.query('SELECT * FROM Utilizador WHERE Nome_Utilizador = ? LIMIT 1', [username], function (err, result) {

if (result.length > 0) {
  if (result) {
    var object = JSON.parse(JSON.stringify(result));
    var userObject = object[0];
    var userQ = object[0].Nome_Utilizador;
    global.connection.query('SELECT Password_Utilizador from Utilizador where Nome_Utilizador = ?', [username], function (err, result) {
      console.log(result);
      if (result.length > 0) {
        if (result) {
          var object2 = JSON.parse(JSON.stringify(result));
          var passQ = object[0].Password_Utilizador;
          if (password == passQ) {
            console.log("Login efectuado com sucesso");
            console.log(userObject);
            res.render('home', { title: 'perfil', layout: 'perfil', data: userObject });
          } else {
            console.log("1");
          }
        }
      } else if (err) {
        console.log("asdsadas");
      } else {
        console.log("2");
        res.render('home', { title: 'perfil', layout: 'registo' });
      }
    });
  }
} else if (err) {
  console.log(err);

} else {
  console.log("Utilizador nao encontrado");
  res.render('home', { title: 'perfil', layout: 'registo' });
}
});
};

这行得通。

它起作用的唯一原因是它来自一个带有方法和动作的表单

<form id="login-nav" action="/login" method='POST' role="form" accept-charset="UTF-8" class="form">
                <div class="form-group">
                  <label for="username" class="sr-only">Utilizador</label>
                  <input id="username" type="username" placeholder="Nome de utilizador" required="" class="form-control" name="username">
                </div>
                <div class="form-group">
                  <label for="exampleInputPassword2" class="sr-only">Palavra-Passe</label>
                  <input id="password" type="password" placeholder="Meta a palavra-passe" required="" class="form-control" name="password">
                </div>
                <div class="checkbox">
                  <label></label>
                  <input type="checkbox">Gravar Dados
                </div>
                <div class="form-group">
                  <button id="botaoLogin" class="btn btn-danger btn-block">Fazer Login</button>
                </div>
              </form>

但是,我尝试用 jQuery 做同样的事情,因为我需要在按钮单击时为某些产品呈现 Handlebars 布局,

$("#pacotes").on('click', ".produto", function () {
    var prod = this.id;
    console.log(prod);
    $.get("http://localhost:3000/pacote?idPacote=" + prod);
});

尽管查询有效并给了我我要求的data

exports.Pacote = function (req, res) {
  var pacote = req.query.idPacote;
  connection.connection();
  global.connection.query('SELECT * FROM Pacotes WHERE idPacotes = ? ', [pacote], function (err, result) {
     if (result.length > 0) {
       if (result) {
         var object = JSON.parse(JSON.stringify(result));
         var packObject = object[0];
         console.log(result);
         res.render('home', { title: 'pacote', layout: 'pacote', data: packObject });
     } else if (err) {
       console.log(err);
     }
   };
 });
}

它根本不渲染布局,我不知道为什么。 像这样进行 POST 请求和通过表单进行有什么区别?

我不明白为什么这似乎只适用于表单。 我可以这样解决它,但我认为对所有按钮使用空表单并不是一个可行的解决方案。

【问题讨论】:

    标签: javascript jquery node.js express handlebars.js


    【解决方案1】:

    你只是发出请求,你没有处理返回值:

    $.get("http://localhost:3000/pacote?idPacote=" + prod);

    尝试更改为:

    $.ajax({ method: 'GET', url: "http://localhost:3000/pacote?idPacote=" + prod, success: function(...) {...} });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 2015-01-01
      • 2013-06-08
      • 1970-01-01
      • 2020-01-16
      • 2017-05-02
      相关资源
      最近更新 更多