1

我有一个 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);
});
});
4

1 回答 1

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);
      }
    });
);

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

PS:不要忘记在节点中清理您的 id。

于 2013-10-18T16:50:23.790 回答