@srnsdlmtn

Как получить значение переменной node.js?

Не получается взять значение из поля формы
сама форма такая:
<html>
    <head></head>
    <body>
        <form method="POST" action="/myaction">
            <input type="text" id="txt" name="name">
            <input type="submit">
        </form>
    </body>
</html>


единственный node.js файл выглядит так:
var http = require('http'),
    fs = require('fs'),
    qs = require('querystring'),
    express = require('express'),
    app = express();

fs.readFile('./index.html', function (err, html) {
    if (err) {
        throw err; 
    }       
    http.createServer(function(request, response) {  
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        app.post('/myaction', function(req, res){
            var word = req.query.name;
            var event = {
                title: word,
                date: "20.20.20"
            };
            var str = JSON.stringify(event);
            fs.writeFileSync('test.txt', str);
        });
        
        response.end();  
    }).listen(8000);
});


проблема вроде как тут:
app.post('/myaction', function(req, res){
            var word = req.query.name;
            var event = {
                title: word,
                date: "20.20.20"
            };
            var str = JSON.stringify(event);
            fs.writeFileSync('test.txt', str);
        });

если я просто пишу значения в var event, то они сохраняются в этот файл, если делаю так как написано выше ничего не работает хотя форма отправляется, посоветуйте как сделать чтобы это работало.
Гуглил много, по русски, по английски, ничего толкового или для себя понятного не нашёл
  • Вопрос задан
  • 1449 просмотров
Решения вопроса 1
mannaro
@mannaro
Умею профессионально гуглить
1. Это как раз тот случай, когда стоит использовать синхронные методы.
2. У вас express ничего не знает о сервере и доступ к нему не передается. Поэтому ничего и не работает. Почитайте как работать с ним.

var fs = require('fs');
var express = require('express');
var app = express();
var bodyParser = require('body-parser');

var html = fs.readFileSync('./index.html');

app.use(bodyParser.urlencoded({}));

app.get('/', function(req, res) {
  res.writeHeader(200, {"Content-Type": "text/html"});  
  res.end(html);  
});

app.post('/myaction', function(req, res){
  var word = req.body.name;
  var event = {
    title: word,
    date: "20.20.20"
  };
  var str = JSON.stringify(event);
  fs.writeFile('test.txt', str, function(err) {
    if(err) console.error(err);
    else res.end("Success");
  });
});

app.listen(3000);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы