Как мне отправить обновленную переменную с клиента на сервер с помощью выборки?

#javascript #node.js #express #server #client

#javascript #node.js #экспресс #сервер #клиент

Вопрос:

Я пытаюсь отправить измененную переменную с клиента на сервер, но я не могу понять это. Чего я пытаюсь достичь, так это того, что я могу использовать ее в main.ejs.

 <script>
document.getElementById("char2btn").addEventListener("click", change)
function change() {
  charOneInView = "Yes"
  const data = {charOneInView}
  const options = {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
  };
  
  fetch('/welcome2', options)
}
  </script>
 

Index.js:

 var  charoptioneOne = "No"

router.post('/welcome2',  ensureAuthenticated, function(req, res){
   console.log(req.body)
   res.redirect('/main'); 
  })
  
router.get('/main', ensureAuthenticated, (req, res) =>
  res.render('main',  {
    user: req.user,
    charOneInView: charoptioneOne,
    charTwoInView: charoptioneTwo
  })
)
 

Мне кажется, что это все еще объект, а не измененная переменная, как мне это исправить?

Ответ №1:

используйте модуль body-parser в серверной части

 const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
 

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

   headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    }