javascript - 通过 Node.js 将客户端表单输入发送到服务器端数据库查询并将结果返回给客户端

标签 javascript sql ajax node.js post

我正在开发一个 Web 应用程序,用户可以在网页上输入“设备 ID”(我们在生产环境中使用了 100 个设备,每个设备都有一个唯一的 ID),用户输入的结果将被发送到 Node.js 服务器,而 Node.js 服务器反过来将其存储到一个变量中,并在 SQL 查询中使用它从数据库服务器检索有关该特定设备的结果,然后将结果显示回客户端网页。

虽然我已经用html编写了表单代码,但目前表单输入功能尚未实现。

如果我手动将 DEVICE_ID 更改为我希望从代码中检索数据的设备,程序就可以正常工作,但当然我希望能够在客户端页面上输入它,而不必在服务器端源代码中手动更改它。

"use strict";
var pg = require('pg').native;
var http = require('http');
var $ = require('cheerio');
var fs = require('fs');
var url = require('url');

var htmlString = fs.readFileSync('index.html').toString();
var parsedHTML = $.load(htmlString);

var dbUrl = "tcp://URL HERE/";

// The Sign-ID
var DEVICE_ID = '2001202';

// Create the http server
http.createServer(function (request, response) {
    var request = url.parse(request.url, true);
    var action = request.pathname;

    // Connect and query the database
    pg.connect(dbUrl, function(err, client) {
        // The complete sql query for everything that's needed for the app!
        client.query("SQL QUERY IS HERE" + DEVICE_ID + "etc..", 
            function (err, result) {
                // Remaining program code is here that performs DOM based 
                // manipulation to display results returned from the server
                // to the client side page.

                // Time to Render the document and output to the console
                console.log(parsedHTML.html());

                // Render the document and project onto browser
                response.end(parsedHTML.html());
            }
        ); // End client.query
    }); // End pg.connect
}).listen(8080); // End http.CreateServer

pg.end();

我考虑了以下几点: 1) 在 HTML 代码中使用 OnClick() 函数,如下所示:

onclick="lookupSignID()

然后在 HTML 中包含一个外部 JS 文件,其中包含 lookupSignID() 函数,但我很快发现这只是执行客户端函数,而不是我想要的。

2) AJAX 仅适用于服务器自行生成新信息的情况,因此我无法使用 AJAX,因为用户输入设备 ID 来从中获取信息。

3) 可能使用 POST/GET

任何人都可以建议我应该采取什么行动吗?如果解决方案(3)是最好的方法,我将如何去做呢?它可以集成到我现有的代码中(如上所示)而不进行太多更改吗?

谢谢!

最佳答案

如果您在客户端使用带有 AJAX POST 功能的 jQuery,然后在服务器端使用express.js,则可以执行以下操作:

app.post('/deviceid', function(req, res) {
   var deviceid = req.param('deviceid')
   console.log(deviceid)
   ...
})

关于javascript - 通过 Node.js 将客户端表单输入发送到服务器端数据库查询并将结果返回给客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15078390/

相关文章:

javascript - 用 anchor 标记替换 DOM 文本

javascript - 仅清除表单中的 <textarea>

不同长度字符串时的javascript正则表达式

sql - 连接到哪个数据库以供更高级别的应用程序管理其他数据库

php - 打印数据库的所有字段

javascript - 类型错误 : Cannot read property of undefined using React

javascript - ng-repeat 破坏指令模型绑定(bind)

c# - 带有手动绑定(bind)的 Telerik MVC Grid Ajax

javascript - 为什么 jQuery.get() 改变了我的 URL?

mysql - SQL查询根据另一个表中的条目派生列值