Как определить и получить доступ к параметрам с помощью метода POST - PullRequest
0 голосов
/ 07 февраля 2020

Я создаю аутентичную форму для своей веб-страницы с помощью Javascript и использую Vue JS на стороне клиента и NodeJS с ExpressJS на стороне сервера.

На стороне сервера я написал свой метод записи:

server.app.post("/login", function(req, res) {
    console.log(req.body.username);
})

На стороне клиента у меня есть форма в моей ссылке html на экземпляр Vue:

<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  </head>
  <body>
  <div id="authent">
      <p>Username :</p>
      <input type="text" name="username" v-model="username" required>
      <p>Pwd :</p>
      <input type="password" name="password" v-model="password" required>
      <button v-on:click="authent">Login</button>
    </div>
    <script src='/authent/vue.js'></script>
    <script src='/authent/vue-resource.min.js'></script>
    <script src="authent.js"></script>
  </body>
</html>
window.onload = function () {
  var authent = new Vue({
    el: '#authent',
    data: {
      username: null,
      password: null
    },
    methods: {
      authent: function() {
        try {
          this.$http.post('/login', {"username": authent.username, "password": authent.password})
            .then(function(response) {
                console.log(response.body);
          })
        } catch (e) {
          console.log(e);
        }
      }
    }
  })
}

Очевидно, я неправильно отправляю параметры в vue экземпляре, потому что на стороне сервера req.body не определено.

РЕДАКТИРОВАТЬ Параметры отправляются, но я не знаю, как я могу получить к ним доступ в моем методе post на стороне сервера.

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

вы отправляете его по ajax пути. и вы, вероятно, также отправляете его как json объект, а не реальные данные поста. в express вы должны написать (чтобы иметь json парсер)

app.use(express.json());

и просто быть в безопасности. также добавьте анализатор тела :-)

app.use(express.urlencoded({ extended: true }))

вам, вероятно, понадобится это слишком рано или поздно

просто добавьте вышеупомянутое промежуточное ПО

1 голос
/ 07 февраля 2020

Я не знаком с Vue, но можете ли вы попробовать использовать this.username вместо authent.username?

В вашем devTools вы видите, что параметры были найдены? Конечно, это проблема переднего плана.

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