Форма отправки JADE не обнаружена, хотя маршрут существует - PullRequest
0 голосов
/ 10 октября 2018

Я использую JADE, node.js и express для создания таблицы для выбора некоторых данных.Все работает на локальном хосте.Когда я пытаюсь использовать route / ClimateParamSelect, он работает и отображает то, что я хотел бы видеть, включая элементы в кодировке URL.

Маршрутизация к этому фрагменту кода находится в app.js, но я подтвердил, что он работает, используя / ClimateParamSelect? Test = test.Маршруты расположены в cliParamSelect.js

router.get('/', async function(req, res, next) {
    console.log('GET');
    console.log(req.query);
});

router.post('/', async function(req, res, next) {
    console.log('POST');
    console.log(req.params);
});
module.exports = router;

Код в app.js может быть важен, так что вот выдержка:

const express = require('express');
var tableSelectRouter = require('./routes/tableSelect');
var cpSelectRouter = require('./routes/climateParamSelect');
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/climateParamSelect', cpSelectRouter);
app.use('/tableSel', tableSelectRouter);

Когда я использую кнопку отправкина следующей странице он вызывается, но по какой-то причине указанный выше маршрут никогда не используется.Вместо этого он отображает: ожидание localhost.

html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css')
    script(src='https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js')  
    script(src='https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js')  
    script.
        $(document).ready(function() {
            $('#selTable').DataTable();
        });
body
  form(name='productionSelect', method='post', action='/climateParamSelect')
    div#wrapper
      h1 Select production data for feature generation
      br
      table#selTable.display
        thead
          tr
            th headers
            //... 
        tbody
          tr
            td 
              input(type='checkbox',id='#{r}',name='#{r}')
            td 
            //...   
      br
      input(type='submit',value='Select Production',name='prodSubmit',data-transition='fade', data-theme='c')

Что мне здесь не хватает?

Спасибо

1 Ответ

0 голосов
/ 10 октября 2018

Браузер будет вращаться до тех пор, пока не получит ответ, и по вашему маршруту ответ не будет отправлен.Я уверен, что вы захотите визуализировать представление, но чтобы быстро его проверить, просто используйте res.send и строку.

Вторая проблема заключается в том, как вы читаете данные, отправленные с клиента.req.params используется для динамического анализа URL с переменными в маршруте.Для обработки данных формы (что вы и отправляете здесь) вы можете использовать req.body.

. Изменение маршрута на это должно исправить ваши проблемы:

router.post('/climateParamSelect', async function(req, res, next) {
    console.log('POST');
    console.log(req.body);
    res.send("hello");
});
...