通过java脚本传递参数来expressionnode.js

我正在使用javascript,html,nodejs,express和mysql从数据库检索值并将其传回给html。

在这里,用户在'btnSearch'文本框中input一个域,并按下Loadbutton。 javascriot在app.js中调用/ getallusers代码。 这个函数应该访问数据库并返回结果。

我面临的问题是:我不能将'btnSearch'中的值传递给app.js。 如果我在html中包含标签,那么请求不会进入/ getallusers,而是进入/hi.html?input=Music。 所以我没有使用标签。

html页面如下:
var xmlDoc = null;

function load() { var str = document.getElementById('btnSearch'); alert(str); if (typeof window.ActiveXObject != 'undefined' ) { xmlDoc = new ActiveXObject("Microsoft.XMLHTTP"); xmlDoc.onreadystatechange = process ; } else { xmlDoc = new XMLHttpRequest(); xmlDoc.onload = process ; } xmlDoc.open( "GET", "/getallusers?input="+str, true ); xmlDoc.send( null ); } function process() { if ( xmlDoc.readyState != 4 ) return ; document.getElementById("output").value = xmlDoc.responseText ; } }</script><body> <input type="text" name="input" id="btnSearch" /> <textarea id="output" cols='70' rows='40'><empty></textarea> <br></br> <button onclick="load()">Load</button> <button onclick="empty()">Clear</button> </body> </html> 

我的expressionfunction是:

  app.get('/getallusers', function (req, res) { var input_domain=req.query.input; console.log(input_domain); connection.query('SELECT DBName FROM CrawlerDBInfo where Domain ='+"'"+input_domain+"'"+';', function (error, rows, fields) { res.writeHead(200, { 'Content-Type': 'text/plain' }); str = ''; for (i = 0; i < rows.length; i++) str = str + rows[i].DBName + '\n'; res.end(str); }); }); 

您可以使用node.js应用程序中的路由接受数据

 app.get('/getallusers/:input', function (req, res) { var input_domain=req.params.input; console.log(input_domain); connection.query('SELECT DBName FROM CrawlerDBInfo where Domain ='+"'"+input_domain+"'"+';', function (error, rows, fields) { res.writeHead(200, { 'Content-Type': 'text/plain' }); str = ''; for (i = 0; i < rows.length; i++) str = str + rows[i].DBName + '\n'; res.end(str); }); }); 

通过在你的路由中使用“:”你可以指定参数。 并从你的JavaScript的UI你发送与调用参数为

 localhost:3003/getallusers/inputdomainvalue 

所以上述路线将被执行。 欲了解更多信息,请参阅API