2013-07-20 2 views
4

Я пытаюсь сделать простую форму с именем пользователя и фамилией, а когда пользователь отправляет информацию, отображается другая страница. Я сделал форму в html, но я не уверен, что делать дальше? Кто-нибудь имеет небольшой, автономный пример формы, используя node js?Приложение простой формы узла js

+0

Есть много примеров на github. Например, [посмотрите на это] (https://github.com/madhums/node-express-mongoose-demo). –

ответ

7

Этот пример не совсем соответствует вашей задаче. Но это самостоятельная программа 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'); 
    }; 
}); 
Смежные вопросы