2013-02-25 51 views
1

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

目前表单输入功能尚未实现,即使我已经在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)使用一个onclick()从HTML代码中的功能,如:

onclick="lookupSignID() 

然后从HTML中包含一个外部JS文件包括lookupSignID()功能,但我很快发现这只是执行客户端功能,并不是我想要的。

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

3)可能使用POST/GET

任何人都可以请告知我应该采取什么措施?如果解决方案(3)是最好的方式,我将如何去做这件事?它可以集成到我的现有代码(如上所示),没有太多的改变?

谢谢!

+0

有,为什么你不”的理由使用express.js? – 2013-02-25 23:21:05

回答

0

如果你使用jQuery的上一个AJAX POST功能的客户端,然后在服务器端,你有express.js,你可以这样做:

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

我从来没有真正使用express,但简单地看了一下,并不表示需要启动它自己的服务器(通过app.listen(port))?这可能会如何影响我目前的Node.js的'http servercreate'功能? 你能给我举一些例子吗? – JackSparrow123 2013-02-25 23:42:45

相关问题