无法在Node.js,Express.js和Jade中获取参数

时间:2018-07-21 05:56:33

标签: mysql node.js express pug

我有一个带有两个选择菜单的页面和一个用于显示数据的表格。我从MySQL中使用“获取”获取数据并填充了选择菜单,现在当我单击“提交”按钮时,它将在下表中显示数据,而无需刷新页面。我是新来的。

App.js

    app.get('/home', function(req, res){
     db.connect(function(err){
      var sale = req.query.cbosale;
      var company = req.query.cbocompany;
       db.query("SELECT DISTINCT(SaleNo) FROM tsales; SELECT DISTINCT(Company) FROM tcompany; SELECT * FROM trecords WHERE SaleNo = '"+sale+"' AND Company = '"+company+"'", [1,2,3], function(err, result, fields){
        res.render('home', {title:"Home",data:result});
       })
      })
   })

Home.jade

    script.
     $('#submit').click(function(){
      var cbosale = $('#cbosale').val();
      var cbocompany = $('#cbocompany').val();
      $.get("/home", {cbosale: cbosale, cbocompany: cbocompany), function(data){
       $('#showdata').show();
      })
     })
    })

当我在查询中插入静态变量时,将显示数据,传递参数不会显示数据。获取参数时可能会出现问题。

1 个答案:

答案 0 :(得分:0)

我立即发现您的代码有两个问题。

最重要的-不是主题,而是重要的-您的服务器容易受到SQL注入的攻击-这是主要的安全漏洞,应修复它。例如,请参见:Preventing SQL injection in Node.js

关于您的主要问题。您根本没有消耗请求的结果。 回调的data根本没有使用。您的$.get回调应类似于以下内容:

function(data){
    $('#dataTitle').val(data.title);
    $('#dataResult').val(data.result); // assuming result is plain string or number 
    $('#showdata').show();
}