Извлечение токена из URL-адреса и отправка post-запроса с использованием Axios — Vue js

#javascript #vue.js #vuejs2 #axios

#javascript #vue.js #vuejs2 #axios

Вопрос:

Я пытался извлечь токен из say http://test.com/confirm?token=MMsndiwhjidh... , а затем отправить post-запрос на другой сервер.

Я пробовал это:

 export default {
    data() {
        return {
            confirmation : false,
            somethingWrong: false       
        }
    },
    
    created: function() {
        axios.post('/confirm', null, {
            method: 'post',
            params: {
                token:this.$route.query.token
            }
        })
        .then(function(res) {
            console.log(res)
            this.confirmation = true       
        })
        .catch(function(error) {
            console.log(error)
            this.somethingWrong = true
        })
    }
}
  

Я получил следующие ошибки:

Журнал ошибок

Журнал ошибок

Я думаю, что я не могу правильно извлечь токен.

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

1. Вы пробовали функции со стрелками в своем .then ? Cannot set property... Ошибка может быть связана с областью действия this . Другие ошибки трудно определить, не видя ваш серверный код

2. Как исправить ошибку не удается установить свойство

3. Попробуйте использовать функции arrow так, как ответил @Kapcash

Ответ №1:

Причина в том, что вы используете декларативные функции вместо функций со стрелками в своих блоках then / catch. this Не относятся к одному и тому же (здесь this это не ваш компонент Vue).

Попробуйте так:

 .then((res) => {
    console.log(res)
    this.confirmation = true       
})
  

Я не буду пытаться объяснить разницу самостоятельно, поскольку в Интернете есть много статей об этом. Вот один