E JS Ошибка ссылки на переменную при отправке формы - PullRequest
0 голосов
/ 07 мая 2020

У меня есть форма на моей странице "welcome.e js". На данный момент я просто пытаюсь вывести текст, введенный пользователем в «welcome.e js», на новую страницу «submitform.e js». Страница успешно маршрутизируется, если я не пытаюсь вывести текст из формы.

Я получаю следующую ошибку:

ReferenceError: C:\Users\hbhar\Desktop\Basic WebApp\views\submitform.ejs:2
    1| <h1>Form Submitted!</h1>

 >> 2| <<p><%= parsedbody %></p>

    3| 

parsedbody is not defined
    at eval (eval at compile (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\ejs\lib\ejs.js:649:12), <anonymous>:12:26)
    at submitform (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\ejs\lib\ejs.js:679:17)
    at tryHandleCache (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\ejs\lib\ejs.js:272:36)
    at View.exports.renderFile [as engine] (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\ejs\lib\ejs.js:478:10)
    at View.render (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\express\lib\view.js:135:8)
    at tryRender (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\express\lib\application.js:640:10)
    at Function.render (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\express\lib\application.js:592:3)
    at ServerResponse.render (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\express\lib\response.js:1012:7)
    at ServerResponse.res.render (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\express-ejs-layouts\lib\express-layouts.js:77:18)
    at C:\Users\hbhar\Desktop\Basic WebApp\routes\index.js:15:9

My index. js файл (находится в / routes ):

const express = require('express');
const router = express.Router();

// Welcome Page
router.get('/', (req, res) => res.render('welcome'));
router.get('/submitform', (req,res) => res.render('submitform'))
// After Form Submission
router.post('/submitform', function(req, res) 
  {
    const parsedbody = {};
    const formsubmission = JSON.stringify(req.body);
    parsedbody[formsubmission] = formsubmission;
    res.render('submitform', parsedbody);
  });

module.exports = router;

Моя основная страница «welcome.e js»:

<form action="/submitform" method="POST">
      <label for="name">Name</label>
      <input
        type="name"
        id="name"
        name="name"
        class="form-control"
        placeholder="Name"      
        </input>
  <button type="submit"></button>
</form>

Мой файл «submitform.e js», который перенаправлен на указанный выше (I ' Мы также пробовали варианты объекта ответа):

<h1>Form Submitted!</h1>
<<p><%= parsedbody %></p>

Спасибо!

1 Ответ

0 голосов
/ 10 мая 2020

Переменные верхнего уровня в шаблоне будут иметь имена свойств объекта, который вы передаете для рендеринга.

Итак, если бы у вас было:

const data = { hello: "World" }
res.render('submitform', data);

Затем вы можете использовать <%= hello %>


Имя переменной, на которую ссылался объект, - , а не , переданное в шаблон. JavaScript аргументы функции никогда не передают имя переменной. Вы не можете использовать <%= data %>

Значение переменной formsubmission не полезное имя для свойства.

...