Как получить значение из динамически сгенерированных <option><select> express ejs - PullRequest
1 голос
/ 21 января 2020

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

Я динамически рендерил {dropdown}, но мне не удалось получить выбранное значение на моем бэкэнде.

в моем бланке я также получаю фотографию, и название пакета динамически отображается.

Код ниже, если я делаю что-то неправильно.

Lang - Javascript FW - Express Js Шаблон - E JS

У меня есть body-parse и установлено значение true.

  • Проблема: я не могу получить выбранное значение в свой бэкэнд, используя запрос POST (неопределенный или ноль).

  • Но если я использую GET в качестве действия и запроса, я получаю выбранное значение.

Еще раз спасибо. Если я не ясно, пожалуйста, я объясню ясно. Я недавно NODE JS И EXPRESS.

- Front-end

<form  class="ui form" action="admin/uploadphoto" method="POST" enctype="multipart/form-data">      

      <h2 class=" ui dividing header" style="text-align: center;">Add Images to suites</h2>

      <div class="two fields">
        <div class="field">
          <label>Add Suites Images</label>
            <input name="suiteimage" type="file">
        </div>
        <div class="field">
          <label>Suites*</label>
          <select name="suiteselected" class="ui dropdown">
            <% suites.forEach(function(suite) { %>     
              <option name = "suiteid" value="<%= suite.suite_name %>"><%= suite.suite_name %></option>
              <% })%>

          </select>
        </div>
      </div>
      <input type="submit" class="ui button" tabindex="0" value="Save New Suite">
    </form>
  • Back-end
const uuid = require("uuid/v4");
const { Pool } = require("pg");
const multer = require("multer");


// Insert photo and selected value from dropdown (options)
const PostPhoto = (req, res) => {
  var suiteimage;
  const suite_photo_id = uuid(); 
  const {suiteselected} = req.body;
  console.log( suiteselected + " --ID") //Here i am testing if selected valued is passed

// this is my multer function to config where i need to store my photo path
  upload(req, res, err => {
     suiteimage = req.file.path;
    if (err) {
      console.log(err);
    } else {
      console.log(suiteimage);
    }
  });


..... //my database query to save my post....

};

-route

router.post ('/uploadphoto', service.PostPhoto);
``

1 Ответ

0 голосов
/ 22 января 2020

Я разобрался с решением этой проблемы, анализ тела должен быть обязательным и расширен правда.

при наличии текста и изображения в виде 1 формы для отправки на сервер убедитесь, что

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

если вам нужно больше объяснений для комментариев.

//my post for image and text function
const PostPhoto = (req, res) => {
   const suite_photo_id = uuid(); 

  upload(req, res, function(err) {
    const {suiteselected} = req.body;
    console.log(req.file);
    var imagePath = req.file.path.replace(/^public\//, '');
    console.log( suiteselected + " --ID")
   console.log(imagePath);


   pool.query(
    "INSERT INTO suite_photos (suite_photo_id,suite_photo,suite_id) VALUES($1,$2,$3)",
    [suite_photo_id, imagePath,suiteselected],
    (error, result) => {
      if (error) {
        throw error;
      } else{
        console.log(result);
        res.redirect("/admin");
      }
    }
  );
 });



};

Это все, что изменилось.

Спасибо всем !!!

...