Node / Express / mysql如何在jade页面中获取SQL结果?
我有一个节点/快速应用程序,我用来监视我的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;')
这部分呈现完美。
现在,我想要做什么:
当用户点击其中一个列表元素时,它应该创build一个Mysql SELECT,并在div#AJAXresults中显示所选表(name_store)的结果。
我可以使用jQuery,并通过PHP做一个Ajax调用,但它会打败目的…我不想链接到另一个页面,我知道该怎么做,我不想刷新页面。你有什么build议?
编辑:
我可以做些什么(从这里的另一个线程启发):
$('#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); }); });
你可以做这样的事情:
添加新的快速路线:
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); } }); );
我没有testing任何这个代码,但你明白了:)
PS:不要忘了在节点中将你的id进行sanatize。