Angular Неожиданный токен c в JSON в позиции 0 в JSON .parse при ожидании строки - PullRequest
0 голосов
/ 27 мая 2020

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

Я пытаюсь использовать средство проверки для полосы, используя эту документацию: https://stripe.com/docs/payments/checkout/accept-a-payment

I настроили мой API, чтобы просто вернуть checkoutid в виде строки. Служба Angular просто вызывает контроллер. Когда я запускаю свой код, я получаю хороший ответ 200, и я вижу идентификатор проверки в теле ответа, но Angular выдает ошибку:

SyntaxError: Unexpected token c in JSON в позиции 0 в JSON .parse () в XMLHttpRequest.onLoad (https://127.0.0.1: 4200 / vendor. js: 18780: 51 ) в ZoneDelegate.invokeTask

Служба выглядит так:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { map } from 'rxjs/operators';

import { environment } from '@environments/environment';

@Injectable({
  providedIn: 'root',
})
export class StripeService {
  private endpoint: string = 'stripe';

  constructor(private http: HttpClient) {}

  checkout(priceId: string) {
    return this.http
      .get<string>(`${environment.apiUrl}/${this.endpoint}/${priceId}`)
      .pipe(
        map((response) => {
          console.log(response);
          return response;
        })
      );
  }
}

и я вызываю ее так:

this.stripeService
  .checkout(this.button.priceId)
  .subscribe((checkoutId: string) => {
    console.log(checkoutId);
    // this.stripe
    //   .redirectToCheckout({
    //     sessionId: checkoutId,
    //   })
    //   .then(function (result) {
    //     // If `redirectToCheckout` fails due to a browser or network
    //     // error, display the localized error message to your customer
    //     // using `result.error.message`.
    //   });
  });

Если я посмотрю на вкладку сети, я могу увидеть это:

enter image description here

Но на самом деле консоль показывает это:

enter image description here

Есть ли у кого-нибудь Скуби, почему?

1 Ответ

1 голос
/ 27 мая 2020

Вероятно, ответ представляет собой строку, а вы не указали тип ответа. Попробуйте следующее:

this.http.get<string>(`${environment.apiUrl}/${this.endpoint}/${priceId}`, {responseType: 'text'})

Тип ответа по умолчанию json.

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