处理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一段时间,但我很确定这是正确的。