处理variables通过jade中的nodejs发送
我有一个脚本发送一个matrix,像[[1,2,3,4], [7,6,5,4], [2,3,4,5]]
。 当我发送它使用res.send(JSON.stringify(dataArray));
并用h1#results
显示它的h1#results
我确实看到格式是正确的。
不过,我想在谷歌图表中使用这些数据。 我的直觉会说这样的数据: data.addRows = results;
。 但事实并非如此,因为玉不明白我的意思是variables发送。
我怀疑我不了解玉背后的一些基本原理。 据我所知,大部分的jade / html是固定的,只有“脚本”标签内的代码才能被执行,但据我所见,谷歌function drawChart() {)
所有代码都在脚本标签内。
编辑
我新的ajax脚本:
$(function() { $('#search').on('keyup', function(e){ if(e.keyCode === 13) { var parameters = { search: $(this).val()}; $.get('/seraching', parameters, function(data) { $('#results').html(data); console.log('parsing json'); var chartData = (data); console.log(chartData[0]) drawChart(chartData, parameters.search); }); } });
});
所以,这里有几个问题。 首先,使用Express和Jade传递一个处理后的模板,使用带有search参数的AJAX获取一些数据,并使用Express路由根据您发送的search参数发送一些数据。
最初,您希望Express和Jade设置主页:
main.jade
html head script(src='googlechart.js') script(src='myJS.js') body title Title h1 Heading input("type='text', id='search'") button("id='submit'")
所以在这里,我们确保Google图表加载以及将包含您的AJAX调用的JS。 我还包括search参数的文本框。
在您的快速应用程序,你会呈现这样的页面:
app.get('/', function (req, res) { res.render("main.jade"); });
myJS.js
首先设置图表对象。 然后,单击提交button时,使用ajax数据属性中的search字段的值。 一旦承诺解决,显示结果。
var chart = new google.visualization.DataTable(); $('#submit').click(function () { var param = $('#search').val(); $.ajax({ url: '/getdata', dataType: 'JSON', data: { search: param } }).done(function (data) { // note that jQuery automatically parses JSON for you chart.addRows(data); }); });
但! 为了做到这一点,你需要在Express中设置路由来处理AJAX调用,看起来像这样:
app.get('/getdata', function (req, res) { var param = req.param('search'); // filter data by search param res.send(JSON.stringify(data)); });
所以,你只需要一次Jade来设置主模板。 这是您提交AJAX请求时需要传递JSON数据的Express路由。
希望这是一个更好的答案:)哦,这里可能有一些拼写错误,因为我没有使用Express一段时间,但我很确定这是正确的。