简单的表单节点js应用程序

时间:2013-07-20 12:18:42

标签: node.js

我正在尝试使用用户名和姓氏制作一个简单的表单,当用户提交信息时,会显示另一个页面。我在html中做了一个表单,但我不确定下一步该做什么?有没有人使用node js

有一个小的,自包含的表单示例

1 个答案:

答案 0 :(得分:10)

此示例并未完全完成您的任务。但它是一个自包含的node.js程序,它在表单接收时显示一个表单和一个不同的页面。

将其复制到文件中,然后运行node filename.js,然后在浏览器中转到http://localhost:3000

注意异步代码结构。我定义了handler函数但不立即执行它。我们将函数传递给http.createServer,然后调用.listen(3000)。现在,当HTTP请求进入时,http服务器将req, res对传递给处理函数。 req是请求对象(这将包含表单数据;有关如何获取数据的一些提示,请参阅this question。(我建议您直接进入并构建一个小型Express应用程序。它是一个非常好的框架。)

//app.js
// Load the built in 'http' library
var http = require('http'); 
var util = require('util');

// Create a function to handle every HTTP request
function handler(req, res){
  if(req.method == "GET"){ 
    console.log('get');
    res.setHeader('Content-Type', 'text/html');
    res.writeHead(200);
    res.end("<html><body><form action='/' method='post'><input type='text' name='hello'><input type='submit'></form></body></html>");
  } else if(req.method == 'POST'){
    console.log('post');
    // Here you could use a library to extract the form content
    // The Express.js web framework helpfully does just that
    // For simplicity's sake we will always respond with 'hello world' here
    // var hello = req.body.hello;
    var hello = 'world';
    res.setHeader('Content-Type', 'text/html');
    res.writeHead(200);
    res.end("<html><body><h1>Hello "+hello+"!</h1></body></html>");
  } else {
    res.writeHead(200);
    res.end();
  };
};

// Create a server that invokes the `handler` function upon receiving a request
// And have that server start listening for HTTP requests
// The callback function is executed at some time in the future, when the server
// is done with its long-running task (setting up the network and port etc)
http.createServer(handler).listen(3000, function(err){
  if(err){
    console.log('Error starting http server');
  } else {
    console.log('Server listening on port 3000');
  };
});