我仍然是 Node.js 的初学者,我正在尝试尽可能多的探索。
我知道 Express.js 是许多人用来在 Node.js 中创建网站的框架。
但是如果不使用 Express.js,我知道可以使用 'fs.readFile' 读取 .html 文件,然后在浏览器中“显示”这个 .html 文件。
有没有办法从这个网页获取用户输入(比如单击按钮,或填写一个框)到 Node.js 中?到目前为止,我还没有找到任何这样的例子。
我仍然是 Node.js 的初学者,我正在尝试尽可能多的探索。
我知道 Express.js 是许多人用来在 Node.js 中创建网站的框架。
但是如果不使用 Express.js,我知道可以使用 'fs.readFile' 读取 .html 文件,然后在浏览器中“显示”这个 .html 文件。
有没有办法从这个网页获取用户输入(比如单击按钮,或填写一个框)到 Node.js 中?到目前为止,我还没有找到任何这样的例子。
是的,这是可能的。研究connect bodyParser 的 urlencoded 函数是如何工作的。
当来自浏览器的请求进入时,节点会将其表示为可读数据流。对于 Web 表单,模式将是:
data
和end
事件将流中的数据块缓冲到单个字符串中。.
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
}
});
}
长话短说:
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();
});
}