Как разместить переменную JavaScript в Node - PullRequest
0 голосов
/ 26 января 2019

Спасибо за чтение, надеюсь, моя презентация понятна читателю и удачно показывает мое непонимание.Я очень новичок в узле.

Я использую node.js с eonasdan datetime.

Проблема, которую мне нужно решить, состоит в том, чтобы напечатать время эпохи из console.log в epoch.js из даты, отправленной нажатием кнопки вepoch.ejs.Epoch.ejs просматривается в браузере, и код html / ejs легко отображает предупреждение с эпохой в нем.

Но у меня проблемы с отправкой данных для печати из console.log в формате эпохи (1548694980).Я могу распечатать его только в console.log в следующем формате: 28.01.2009 12:03

Мне все равно, преобразую ли я его в epoch.ejs или epoch.js.

В настоящее время, когда я фиксирую дату в файле ejs и использую body-parser, чтобы отправить ее в файл узла epoch.ejs.

Я правильно или, возможно, ошибочно считаю, что он доступен в функции javascript.Одним из решений может быть использование глобальной переменной и получение ее в теле.Некоторые попытки потерпели неудачу.Описано ниже.

Если поместить это в верхнюю часть скрипта в html, сборщик даты и времени не сможет отобразить начальную дату.Поэтому создание глобальной переменной в javascript имеет конфликт, который я не могу найти:

 var start = $('#dateTimeStart').data('DateTimePicker').date().unix() 
    alert(start)

Код node.js (начинающийся с 'node epoch.js'):

//setup

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

app.set('view engine','ejs');
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

    app.use(express.static(path.join(__dirname, 'public')));

app.get("/", function(req, res, next){
      res.render("epoch")
});

app.post("/postDateTimeStart", function(req, res, next) {
  console.log(req.body.start);
  times(req.body, res);
);

pp.get('/getJson', function (req, res) {
    // If it's not showing up, just use req.body to see what is actually             being passed.
    console.log(req.body.selectpicker);
});

function times(parms, res){ 
//get parms based on input name attribute from html and parse
    var startTime = parms.dateTimeStart;
    var dateStart = parms.start

    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.end("start time: " + startTime);
    console.log(startTime, dateStart)
}        

app.listen(3000,function(){
    console.log("serving test demo on port 3000")
});

html (заканчивается на ejs):

<!DOCTYPE html>
  <header>
    <title>Send Epoch to Node Test</title>

    <script src="/jquery.js" type="text/javascript"></script>
    <script src="/moment.js" type="text/javascript"></script>
    <script src="/bootstrap.js" type="text/javascript"></script>
    <script src="/bootstrap-datetimepicker.min.js" type="text/javascript"></script>

    <link rel="stylesheet" type="text/css" href="/bootstrap.css"></link>
    <link rel="stylesheet" type="text/css" href="/bootstrap-datetimepicker.css"></link>

    <script type="text/javascript">

        $(function () {
            $('#dateTimeStart').datetimepicker({
                daysOfWeekDisabled: [0, 6]
            });

       });

        function getValue() {
            var dTstart = $('#dateTimeStart').data("DateTimePicker").date();
            if( dTstart ){

                /* HOW DO I GET THIS VARIABLE TO BE SEEN BY NODE? */
                alert(dTstart.unix());
            }
        }

       $('#dateTimeStart').datetimepicker();

       var start = $('#dateTimeStart').data('DateTimePicker').date().unix() 
       alert(start)

    </script>

  </header>

  <body>

    <form action="/postDateTimeStart" method="post">
    <div class="col-md-12">

    <div class="col-md-1">
        <div class="form-group">
            <label for="exampleFormControlSelect1">Draw</label>
                <p><button onclick="getValue()" type="submit" class="btn btn-custom btn-block">Graph it!</button></p>
        </div>
    </div>

    <div class="col-md-2">
        <div class="form-group">
            <label for='dateTimeStart'>Start Date-and-Time</label>
            <div class='input-group date' id='dateTimeStart'>
                <input type='text' class="form-control" name='dateTimeStart' />
                <span class="input-group-addon">
                    <span class="glyphicon glyphicon-calendar">
                    </span>
                </span>
            </div>
        </div>
    </div>

    </div>

  </body>

</html>

Ожидаемые результаты будут в журнале консоли при нажатии кнопки:

1548695940 28.01.2009 12:19 1548695940

Фактические результаты после нажатия на кнопку:

undefined 28.01.2009 12:18 undefined

1 Ответ

0 голосов
/ 27 января 2019

Изменение javascript, где ранее было отправлено предупреждение:

if( dTstart ){
    alert(dTstart.unix());
} 

на:

if( dTstart ){
                document.getElementById("dTstart").value = dTstart.unix();
            }

и добавление его в последнюю строку тела:

<input type="hidden" id="dTstart" name="dTstart" value="">

Результат, как и ожидалось: 1548681480 28.01.2009, 8:18 1548681480

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

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