Неожиданный токен в файле json Angular 4

Я использую Angular 4 и Spring framework для создания своего проекта. и это моя проблема

{error: SyntaxError: Неожиданный токен A в JSON в позиции 0 в JSON.parse () в XMLHttp…, текст: «AAA»}

Я хочу прочитать строку AAA, но консоль показывает мне эту ошибку.

Мой бэкэнд-код:

@PostMapping(value = "login")
public ResponseEntity<?> verifyLogin(@RequestBody String login){
    System.out.println("LOGIN REALIZADO");
    LoginObject loginO = gson.fromJson(login, LoginObject.class);

    if (verify(loginO)){
        return new ResponseEntity<String>("AAA",HttpStatus.OK);
    }else{
        return new ResponseEntity<String>("ERROR-LOGIN",HttpStatus.OK);
    }


}

Моя внешняя служба:

export class LoginService{

  private url = 'http://localhost:8080/login';

  constructor(private http: HttpClient){}

     loginQuery(login: Login):Observable<string>{
        return this.http.post<string>(this.url,JSON.stringify(login));
     }
}

и мой интерфейс

onSingin (форма: NgForm) {

if ( (form.value.code !== '') && (form.value.password !== '')){
  this.loginService.loginQuery(new Login(form.value.code, form.value.password)).
  subscribe(
    result => this.verifyLogin(result.toString())
   );
}
}

когда я вызываю verifyLogin, консоль показывает мне ошибку

Что ж, AAA недействителен JSON, и вы говорите HttpClient, что ожидаете JSON. Пора читать документацию: angular.io/guide/http#requesting-non-json-data

JB Nizet 13.03.2018 18:20
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
1
1 060
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вместо использования простой строки AAA, которая не является допустимой Json, используйте карту строки в ResponseEntity<Map<String, String>>

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

export class LoginService{

  private url = 'http://localhost:8080/login';

  constructor(private http: HttpClient){}

     loginQuery(login: Login):Observable<string>{
        // Your previous code:
        // return this.http.post<string>(this.url,JSON.stringify(login));
        
        // Updated with details from (https://angular.io/guide/http#requesting-non-json-data)
        return this.http.post<string>(this.url, JSON.stringify(login), {responseType: 'text'});
     }
}

@LucasAlves => Если это сработает для вас, не могли бы вы принять это как ответ, чтобы другие, просматривающие страницу в будущем, знали об этом?

th3n3wguy 13.03.2018 19:06

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