来自网站的Node.js用户输入(不使用Express.js)

时间:2013-04-04 03:34:49

标签: node.js user-input fs

我仍然是Node.js的初学者,我正尽力探索。

我知道Express.js是很多人用来在Node.js中创建网站的框架。

但是没有使用Express.js,我知道可以使用'fs.readFile'读取.html文件,然后在浏览器中“显示”这个.html文件。

有没有办法让用户输入(比如按一下按钮,或填写一个方框)从这个网页进入Node.js?到目前为止,我还没有找到任何这方面的例子。

2 个答案:

答案 0 :(得分:2)

是的,这是可能的。研究connect bodyParser's urlencoded function works

的方式

当请求从浏览器进入时,节点将把它表示为可读数据流。对于Web表单,模式将是:

  1. 使用请求的dataend事件将流中的数据块缓冲到单个字符串中。
  2. 根据数据格式适当地解析该字符串。对于Web表单,这通常是urlencoded(application / x-www-form-urlencoded)MIME类型
  3.   var qs = require('qs'); //https://github.com/visionmedia/node-querystring
      function handle(req, res) {
        var buf = '';
        req.setEncoding('utf8');
        req.on('data', function(chunk){
          //assemble the request from distinct chunks into a single string
          buf += chunk
        });
        req.on('end', function(){
          //OK, you have a usable string request body, parse it and handle it
          try {
            var formData = qs.parse(buf);
            //Yay, it parsed. Now you have your form data
            //depending on your form's html, you might have formData.email, for example
          } catch (err){
            //oops, respond with an error          
          }
        });
      }
    

答案 1 :(得分:1)

Tutorial

长话短说:

http.createServer(function (req, res) {
    var data = '';
    req.on('data', function(chunk) {
        console.log("Received body data:");
        console.log(chunk);
        data += chunk.toString();
    });

    req.on('end', function() {
        console.log('Received Data: ', data);
        res.end();
    });
}