Как получить данные запроса с перенаправленного URL

#javascript #vue.js

#javascript #vue.js

Вопрос:

У меня есть платеж по карте, который возвращает ответ с перенаправленным URL-адресом. Я должен перенаправить пользователя после инициализации платежа. Я делаю это с помощью:

 ...
 window.location.href = response.data.meta.authorization.redirect
  

Для подтверждения платежа на странице, которую я не контролирую.

После проверки у меня есть URL-адрес перенаправления в моем запросе, который перенаправляет (перенаправление браузера) пользователя обратно в мое приложение с данными запроса, которые выглядят следующим образом:

 http://account.localhost.com/deposit/card?response={"id":1499407,"txRef":"tUhElMQhoC"...,
  

Мне нужен идентификатор в этом URL-адресе для подтверждения платежа и последующего обновления моей базы данных.

Как я могу сделать это с помощью Vue?

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

1. Используете ли вы Vue-router?

2. @Daniel_Knights Да, я

Ответ №1:

Вы можете использовать URL API для извлечения json в response параметре, затем проанализировать его и получить идентификатор из результирующего объекта.

 const str = `http://account.localhost.com/depositcard?response={"id":1499407,"txRef":"tUhElMQhoC"}`

const json = new URL(str).searchParams.get('response')
const obj = JSON.parse(json)
console.log(obj.id)  

Ответ №2:

С помощью Vue-router вы можете получить параметры запроса с this.$route.query , а затем получить доступ к определенному параметру: this.$route.query.id

Поскольку идентификатор находится внутри объекта stringified JSON, вам придется сначала проанализировать его: JSON.parse(this.$route.query.response).id

Итак, с перенаправлением имеет смысл получить доступ к данным в created цепочке жизненного цикла:

 created() {
    console.log(JSON.parse(this.$route.query.response).id);
}
  

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

1. Куда именно этот код попадает в моем компоненте после перенаправления браузера?

2. Обычно в created крючке

3. Я получаю undefined

4. Извините, я неправильно прочитал ваш URL. Вам нужно будет сделать JSON.parse(this.$route.query.response).id