Как иметь форму и результаты на одной странице (GET / POST маршрутизация) - PullRequest
0 голосов
/ 22 ноября 2018

У меня к вам вопрос.

Я использую шаблонный движок ExpressJS и Pug для небольшого приложения.Я создаю форму и отправляю значения формы по методу POST.После некоторой обработки я хочу отобразить результаты на той же странице (страница формы).

index.pug (на стороне клиента)

form(method='POST' action='/comparetable/results')

    div.form-group
        label(for="libelle") Libellé
        input(
            type="text"
            class="form-control" 
            name="libelle"
            id= "libelle"
            value=libelle? libelle : ""
        )

if(data)

    if data.length == 0
        p No errors
    else
        table.table
            thead
                tr
                    td(scope="col" class="font-weight-bold") Ligne

            tbody
                each dataRow in data
                    tr
                        td= dataRow["ligne"]

app.js (на стороне сервера)

app.get('/comparetable', function (req, res, next) {
    res.render('compare', { 
        libelle : req.body.libelle,
        data: (req.outputArray? req.outputArray : null)
    });
});

app.post('/comparetable/results', function (req, res, next) {
    const libelle = req.body.libelle;

    // some processing
    // input : libelle (a string)
    // output : outputArray (an array with data)

    req.outputArray = outputArray;
    res.redirect('/comparetable');
})

В клиентской части у меня есть форма, которая отправляет сравниваемые значения / результаты в метод POST и отображает результаты, если данные определены.На стороне сервера у меня есть два маршрута: get (который отображает шаблон с данными) и post (который выполняет обработку и перенаправление для получения метода для отображения).

Цель состоит в том, чтобы иметь один шаблон (client-сторона) и одна функция рендеринга / маршрут (сторона сервера).В настоящее время это не работает.Кто-нибудь, чтобы помочь мне, пожалуйста?

...