Как взять строку из JSON в Angular

Итак, я в основном пытаюсь установить токен в своем локальном хранилище. Я делаю запрос к своему API в PHP, и это код:

login() {
    const body = JSON.stringify({
      "usuario":"juanma",
      "password":"1234"});
    console.info(body);
    const params = new HttpParams();
    const headers = new HttpHeaders();
    this.http.post<AuthResponse>("http://localhost:8000/login", body, {'headers':headers,'params':params})
      .subscribe(data => localStorage.setItem('token', data.token.toString()));

  }

Я действительно получаю токен, я даже вижу его в console.info (сейчас не отображается в коде, но я попробовал, и он появился).

AuthResponse — это созданная мной модель, которая воспроизводит возврат JSON из метода post.

Однако я не могу установить токен как строку в localStorage, и я получаю следующее:

Я действительно потерян с этим. Если кто поможет, буду благодарен!

Обновлено: добавлен скриншот console.info(data.token) внутри подписки:

Обновлено еще раз: Теперь я правильно понял токен! Проблема в том, что мне нужно сделать метод 2 раза, чтобы заставить его работать.

Как видите, в первый раз, когда я создал этот метод, он дает значение «неопределенное».

А для http.post вам не нужен JSON.stringify. Вы можете добавить объект JSON напрямую

Flo 12.02.2023 18:54
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам просто нужно заменить data.token.toString() на data.token.token

login() {
    const body = JSON.stringify({
      "usuario":"juanma",
      "password":"1234"});
    console.info(body);
    const params = new HttpParams();
    const headers = new HttpHeaders();
    this.http.post<AuthResponse>("http://localhost:8000/login", body, {'headers':headers,'params':params})
      .subscribe(data => localStorage.setItem('token', data.token.token));

  }

Я работаю! Однако вместо установки только значения токена он устанавливает все JSON. Вместо этого (что я получаю сейчас): {"токен":"...."} Мне нужно получить это: (значение токена)

jmcamacho7 12.02.2023 19:18

Я обновил свой ответ, тогда вам должно быть хорошо с data.token

IdontwearString 12.02.2023 19:23

Та же ошибка, что и в вопросе. Для localStorage установлено значение «[object Object]».

jmcamacho7 12.02.2023 19:29

Покажите console.info(data.token) внутри подписки, пожалуйста

Flo 12.02.2023 19:37

Добавлен скриншот console.info(data.token)

jmcamacho7 12.02.2023 19:44

Я снова обновил свой ответ на основе вашего console.info, вам нужно установить data.token.token

IdontwearString 12.02.2023 19:54

Сработало, но мне нужно сделать это 2 раза, чтобы установить значение. Есть идеи, как это исправить?

jmcamacho7 12.02.2023 20:25

Что нужно сделать 2 раза? Пожалуйста, дополните

IdontwearString 12.02.2023 20:53

Означает, что мне нужно щелкнуть кнопку входа в мой HTML, чтобы он работал. В первый раз он дает неопределенную вещь, а во второй раз дает правильный токен. Вы можете увидеть это, как указано в журнале консоли на новом скриншоте.

jmcamacho7 12.02.2023 20:55

Это не имеет ничего общего с localStorage, а скорее с вашим API. Вы уверены, что получите ответ с первого раза?

IdontwearString 12.02.2023 21:06

Давайте продолжим обсуждение в чате.

jmcamacho7 12.02.2023 21:11

Другие вопросы по теме