首页 > 解决方案 > 错误:SyntaxError:JSON 中位置 0 的意外标记 g

问题描述

当我输入字母时,这个错误会给我,如果我输入数字,它不会给我。我想知道如何解决它。

角码 auth.service.ts

 refactor(data: string): Observable<any>{
        return this.http.post<any>(apiUrl, data)
          .pipe(
            tap(_ => this.log('refactor')),
            catchError(this.handleError('refactor', []))
          );
      }

组件.ts

this.anomtextService.refactor($('#file').val().toString())
         .subscribe(res => {

           $('#textAnom').val(res);

         }, (err) => {
           console.log(err);
           alert(err.error);
         });

     }

API REST JAVA

@PostMapping(path = "/rename")
    public String getPathByDoc(@RequestBody String text) {

        return text;

    }

在此处输入图像描述

token.interceptor.ts

    import { Injectable } from '@angular/core';
import {
    HttpRequest,
    HttpHandler,
    HttpEvent,
    HttpInterceptor,
    HttpResponse,
    HttpErrorResponse
} from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { map, catchError } from 'rxjs/operators';
import { Router } from '@angular/router';

@Injectable()
export class TokenInterceptor implements HttpInterceptor {

  constructor(private router: Router) {}
  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

      const token = localStorage.getItem('token');
      if (token) {
        request = request.clone({
          setHeaders: {
            'Authorization': 'Bearer ' + token
          }
        });
      }
      if (!request.headers.has('Content-Type')) {
        request = request.clone({
          setHeaders: {
            'content-type': 'application/json'
          }
        });
      }
      request = request.clone({
        headers: request.headers.set('Accept', 'application/json')
      });
      return next.handle(request).pipe(
        map((event: HttpEvent<any>) => {
          if (event instanceof HttpResponse) {
            console.log('event--->>>', event);
          }
          return event;
        }),
        catchError((error: HttpErrorResponse) => {
          console.log(error);
          if (error.status === 401) {
            this.router.navigate(['login']);
          }
          if (error.status === 400) {
            alert(error.error);
          }
          return throwError(error);
        }));
  }
}

可能有问题,我整天都在拉屎。

我很感激你能给我的帮助。

他们给我的可能解决方案:Angulars HttpClient 期望您的响应类型为 json 并尝试解析它。您可以告诉 HttpClient 改为接受纯文本。

但我不知道如何解决

标签: javaangulareclipseangular8http-error

解决方案


AngularsHttpClient期望您的响应类型为 json 并尝试解析它。您可以告诉HttpClient接受纯文本。

refactor(data: string): Observable<any>{
    const headers = new HttpHeaders().set('Content-Type', 'text/plain; charset=utf-8');

    return this.http.post(apiUrl, data,{headers,responseType: 'text'})
          .pipe(
            tap(_ => this.log('refactor')),
            catchError(this.handleError('refactor', []))
          );
}

推荐阅读