【问题标题】:Node/Express/mysql How to make get SQL results within jade page?Node/Express/mysql 如何在jade页面中获取SQL结果?
【发布时间】:2013-10-27 13:50:07
【问题描述】:

我有一个 node/express 应用程序,用于监控我的 MySQL 数据库。 我的页面是这样的:

节点:

app.get('/banners', function(req,res){
    connection.query("SELECT * FROM banner_store_idx WHERE id_type='1' ORDER BY id_banner ASC", function selectCb(err, results, fields) {
        if (err) {
            throw err;
        }
        res.render('banners', {
            title: results[0].title,
            results: results
        });
    });
});

这与这个 Jade 模板有关:

!!!
html
    head
    body
    ul
    - each result in results
        li(id=result['name_store'])= result['name_store']
    div#AJAXresults(style='margin: 0 auto; width: 800px; height: 600px; margin: 0 0 20px 0; border: solid 1px #999; overflow-y: scroll;')

这部分渲染完美。

现在,我想做什么:

当用户单击列表元素之一时,它应该进行 Mysql SELECT 并在 div#AJAXresults 中显示所选表 (name_store) 的结果。

我可以使用 jquery,并通过 php 进行 ajax 调用,但它会破坏目的......我不想链接到另一个页面,我知道该怎么做,我不想要页面刷新...您有什么建议?

编辑:

我可以做类似的事情吗(受此处另一个线程的启发):

$('#id of list elem').click(function() {
    $.get('/ajax', {id:elem_id}, function(result) {
        $('#AJAXresults').html(result);
    }
}

然后在节点中

app.get('/ajax', function(req,res){
connection.query("SELECT * FROM id ", function selectCb(err, results, fields) {
    if (err) {
        throw err;
    }
    res.send(results);
});
});

【问题讨论】:

  • AJAX调用的目的是为了避免页面刷新,所以我没有得到你最后的说法……
  • 我想避免声明中的php部分...
  • 您可以只使用 javascript/jquery 进行 ajax 调用。 $.ajax 为您完成。

标签: javascript mysql node.js express pug


【解决方案1】:

你可以这样做:

在 express 中添加一条新路线:

app.get('/your/route/name', function(req,res) {
      var id = req.query.id; // get your id from ajax request

      ...

      res.send(render_html); 
});

玉:

li.list-result(id=result['name_store'], data-id=result['id'])= result['name_store']

Javascript:

$('.list-result').click(function(){
    var id = {id: $(this).data("id")};
    $.ajax({
      type: "GET",
      url: "/your/route/name",
      data: id,
      success: function(data) {
          $("#AJAXresults").html(data);
      }
    });
);

我没有测试任何代码,但你明白了 :)

附: : 不要忘记在节点中清理你的 id。

【讨论】:

  • 谢谢!它绝对让我走上了正确的道路! 2 次编辑:使用 req.query 而不是 req.params 并且在 JS 中,我将 id 设为:id = {id:this.data("id")}
  • 很高兴它有帮助:)(如果它对你有帮助,请不要忘记接受答案:))
  • 完成,只是在等待编辑被接受,所以它不会误导任何人:)
猜你喜欢
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
  • 2014-01-24
  • 1970-01-01
相关资源
最近更新 更多