Обрабатывать данные запроса POST с помощью Node js - PullRequest
0 голосов
/ 12 декабря 2018

Есть ли способ получить текст, содержащийся в абзаце, используя метод POST в форме?Я хотел бы получить текст в следующем абзаце:

<form id="selected_activity_form" method="POST" action=<%=token%>>
        <p>text_goes_here</p>
        <input type="submit" value="click" name="btn" id="btn"/>
</form>

PS Я использую Node J для обработки запросов.

1 Ответ

0 голосов
/ 12 декабря 2018

************************************************ Пример - 1 *************************************

<form method="POST" action="/login">
   <input name="email" placeholder="Email Address" />
   <input name="password" placeholder="Password" />
</form>

const http = require('http'),
const qs = require('querystring');

var server = http.createServer(function(req, res) {
  if (req.method === 'POST' && req.url === '/login') {
    var body = '';
    req.on('data', function(chunk) {
      body += chunk;
    });
    req.on('end', function() {
      var data = qs.parse(body);

      //**** now you can access `data.email` and `data.password`********//

      res.writeHead(200);
      res.end(JSON.stringify(data));
    });
  } else {
    res.writeHead(404);
    res.end();
  }
});

server.listen(80);

***************************** Пример - 2 ***********************

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>CSS3 Contact Form</title>
</head>
<body>
<div id="contact">
    <h1>Send an email</h1>
    <form action="/myaction" method="post">
        <fieldset>
            <label for="name">Name:</label>
            <input type="text" id="name" name="name" placeholder="Enter your full name" />

            <label for="email">Email:</label>
            <input type="email" id="email" placeholder="Enter your email address" />

            <label for="message">Message:</label>
            <textarea id="message" placeholder="What's on your mind?"></textarea>

            <input type="submit" value="Send message" />

        </fieldset>
    </form>
</div>
</body>
</html>

Использование http.createServer очень низкоуровневое и действительно бесполезное для создания веб-приложений как есть.

Хороший фреймворк для использования поверх негоЭкспресс, и я бы серьезно предложил использовать его.Вы можете установить его, используя npm install express.

Если у вас есть, вы можете создать базовое приложение для обработки вашей формы:

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

    //Note that in version 4 of express, express.bodyParser() was
    //deprecated in favor of a separate 'body-parser' module.
    app.use(bodyParser.urlencoded({ extended: true })); 

    //app.use(express.bodyParser());

    app.post('/myaction', function(req, res) {
      res.send('You sent the name "' + req.body.name + '".');
    });

    app.listen(8080, function() {
      console.log('Server running at http://127.0.0.1:8080/');
    });

Вы можете настроить свою форму на нее, используя:

<form action="http://127.0.0.1:8080/myaction" method="post">

Причина, по которой вы не можете запустить Node на порту 80, заключается в том, что на этом порту уже запущен процесс (который обслуживает ваш index.html).Вы также можете использовать Express для обслуживания статического контента, такого как index.html, используя промежуточное программное обеспечение express.static.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...