传递参数以通过javascript表达node.js.

时间:2013-11-22 06:26:40

标签: javascript html5 node.js express

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

此处,用户在“btnSearch”文本框中输入域并按下“加载”按钮。 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>

我的表达功能是:

    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);
    });
});

1 个答案:

答案 0 :(得分:3)

您可以使用node.js app中的路由接受数据 如

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);
    });
});

在路线中使用“:”可以指定参数。从您在UI中的javascript中,您可以使用参数

发送get调用
localhost:3003/getallusers/inputdomainvalue

所以上述路线将被执行。 有关详细信息,请参阅api