【问题标题】:Passing parameters to express node.js via java script通过javascript传递参数以表达node.js
【发布时间】:2013-11-22 06:26:40
【问题描述】:

我正在使用 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);
    });
});

【问题讨论】:

    标签: javascript html node.js express


    【解决方案1】:

    您可以在 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);
        });
    });
    

    通过在您的路线中使用“:”,您可以指定参数。并从 UI 中的 javascript 发送 get 调用,参数为

    localhost:3003/getallusers/inputdomainvalue
    

    所以上面的路由将被执行。 欲了解更多信息,请参阅api

    【讨论】:

    • 我试过这个,我得到了错误:Cannot GET /127.0.0.1:1213/getallusers/Music。我有个疑问。我们是否需要指定 get 调用如下? localhost:3003/getallusers/?input=domainvalue
    • 你需要在你的应用中添加一个路由 app.get('/getallusers/:input', function (req, res) {var input_domain=req.params.input;//here you将获得价值音乐});
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多