Как передать переменную из экспресс-представления в router.js файловый узел JS

#javascript #node.js #express #hogan.js

#javascript #node.js #экспресс #hogan.js

Вопрос:

Я собираю информацию о своем представлении с помощью javascript и события onclick, однако единственный способ, который я вижу, передать обратно в качестве ответа, приведен ниже.

 window.open("/explorer/"   e.target.id , "_self" );
  

Затем в файле маршрутизатора index.js файл Я использую следующее, чтобы получить этот параметр и использовать его в своем коде узла.

 router.get('/explorer/:folder_name, function(req,res) {
        var command = 'ls -lrt '   req.params.folder_name;
        exec(command);
    }
});
  

Это действительно работает, но проблема в том, что файл маршрутизатора затем попытался открыть страницу, которая не существует.

Это простой процесс, но, похоже, я не могу найти простой способ сделать это.

Любые предложения о том, как передать переменную из экспресс-представления, например .. index.hjs в файл маршрутизатора, например .. index.js в node.js экспресс?

Комментарии:

1. я бы посоветовал вам прочитать о html-ссылках, формах и формах. и некоторая документация expressjs, кроме того, вы никогда не извлекаете строки из клиента, по крайней мере, без предыдущей очистки

2. @DayanMorenoLeon Вы предлагаете использовать POST для серверной части? Я знаю о html-ссылках и формах, однако я не думаю, что они представляют решение в этой ситуации. Если вы знаете об одном, мне было бы интересно его услышать. Очевидно, что это POC без проверки на месте.

3. как вы думаете, почему форма этого не сделает? какую проблему вы находите в этом подходе?

4. @DayanMorenoLeon Если бы я должен был публиковать из представления, как бы я получил эти данные в серверной части? Я пытался сделать это с помощью app.post, но безуспешно.

5. точно так же, как вы всегда делаете представление, вы вводите веб-страницу. вы ускоряете действие в форме, указывающей на ваш маршрут, серьезно читайте о формах и жизненном цикле веб-приложений

Ответ №1:

Не похоже, что вы вернули ответ из запроса. Может быть, он пытается найти страницу 404 или 500, которая не найдена? Если вы отправите ответ, подобный приведенному ниже, решит ли это проблему?

 res.send({ status: 'success' });
  

Обновить:

Согласно вашему комментарию, вот надуманный пример отправки данных с клиента (представления) на экспресс-маршрутизатор:

 $.post('/explorer', 'folder='   e.target.id);
  

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

 router.post('/explorer', function(req, res) {
    var command = 'ls -lrt '   req.body.folder;
    exec(command);
});
  

Этот код не был проверен, поэтому вам, возможно, придется с ним повозиться.

Комментарии:

1. Могу ли я использовать res.send в моем представлении? будет ли это внутри тега скрипта? Как я мог получить это в серверной части?

2. Похоже, вам может потребоваться больше связи между клиентом и сервером. В этом случае я рекомендую несколько поисковых запросов Google для публикации данных в expressjs с использованием jQuery.

3. Ваш ответ заключается в том, как отправлять из серверной части в view, если бы вы могли привести пример того, как это можно использовать для обратного, это было бы здорово. Я потратил довольно много времени на чтение и поиск решения в Интернете, прежде чем публиковать этот вопрос.

4. Спасибо за помощь, Хейс