我有一个节点/快速应用程序,用于监视我的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);
});
});
答案 0 :(得分: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);
});
Jade:
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);
}
});
);
我没有测试任何此代码,但您明白了这一点:)
P.S。 :不要忘记在节点中对你的id进行sanatize。