SyntaxError: неожиданный токен <в JSON в позиции 0 в JSON.parse (<anonymous>) в XMLHttpRequest.onLoad - PullRequest
1 голос
/ 15 мая 2019

надеюсь, что это не глупый вопрос. при подключении ionic и java springboot не появляется сообщение об ошибке, когда приложение работает в браузере и данные отображаются правильно. Но получил SyntaxError: неожиданный токен <в JSON в позиции 0 при ошибке JSON.parse () при тестировании на устройстве Android. </p>

Я искал и понял, что проблема связана с анализом JSON, но я не совсем понимаю, почему в браузере не появляется сообщение об ошибке.

что я пытаюсь сделать здесь: У меня есть таблица «Пользователь» с именем и адресом электронной почты, и я подключаюсь, чтобы отобразить все имя на внешнем интерфейсе. Бэкэнд возвращает список.

Я также использовал расширение Chrome CROS, но я не думаю, что это вообще связано. кто-нибудь может помочь объяснить? всем спасибо

   typescript
   ngOnInit() {
      this.surgeonList = [
      ];
      console.log(this.value);
      this.httpclient.get('http://localhost:8080/users'
      ).subscribe(
          data => {
              data = JSON.parse(JSON.stringify(data));
              for (var i  = 0 ; i < (<Array<any>>data).length; i++) {
                  this.surgeonList.push(
                      {
                          name: data[i].lastname,
                          icon: 'person'
                      }
                  );
              }
          }
      );
  }
JAVA spring controller

    @GetMapping("/users")
    public List getUsers(){
        List users = userRepository.findAll();
        return users;
    }

Ответ на запрос get правильно регистрирует данные:

[
    {
        "id": 2,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen698698@gmail.com",
        "password": "613387"
    },
    {
        "id": 3,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": null
    },
    {
        "id": 4,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": null
    },
    {
        "id": 5,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": null
    },
    {
        "id": 6,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": null
    },
    {
        "id": 7,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": "123333"
    },
    {
        "id": 8,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": "123333"
    },
    {
        "id": 9,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": "123333"
    },
    {
        "id": 10,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": "123333"
    },
    {
        "id": 11,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": "123333"
    },
    {
        "id": 12,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": "123333"
    },
    {
        "id": 13,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": "123333"
    },
    {
        "id": 14,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": "123333"
    },
    {
        "id": 15,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": "123333"
    },
    {
        "id": 16,
        "lastname": "Liu",
        "firstname": "Jerry",
        "email": "karen77777",
        "password": "123333"
    },
    {
        "id": 17,
        "lastname": "chenniuniu",
        "firstname": "Jerry",
        "email": "chenniuniu@gmail.com",
        "password": "613387"
    },
    {
        "id": 18,
        "lastname": "chendada",
        "firstname": "Jerry",
        "email": "chendaada@bobo.com",
        "password": "613387"
    },
    {
        "id": 19,
        "lastname": "chendada",
        "firstname": "Jerry",
        "email": "chendaada@bobo.com",
        "password": "613387"
    },
    {
        "id": 20,
        "lastname": "VFVSD",
        "firstname": "Jerry",
        "email": "DSFSDF",
        "password": "FDSFSDFDS"
    },
    {
        "id": 22,
        "lastname": "zhaohua liu",
        "firstname": "Jerry",
        "email": "zliu633@uwo.ca",
        "password": "613387"
    },
    {
        "id": 23,
        "lastname": null,
        "firstname": null,
        "email": "yche98@uwo.ca",
        "password": "613388"
    }
]

но получил это при удаленной проверке на хром

vendor.js:44729 ERROR 
HttpErrorResponse
error:
error: SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse (<anonymous>) at XMLHttpRequest.onLoad

РЕЙДИТ:

Спасибо, ребята, за ваш ответ. Я новичок в сообществе, вы, ребята, лучшие.

Я выясняю, что здесь не так:

когда я работаю в браузере, я нахожу, что ответ правильный, как у json, как сказали все вы, ребята. ответ на запрос в браузере

однако, когда я развернул приложение и удаленно протестировал его на устройстве: Я получил index.html в качестве ответа: введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Сделайте следующее: Положите @ResponseBody на свой контроллер

@GetMapping("/users")
@ResponseBody
public List getUsers(){
    List users = userRepository.findAll();
    return users;
}

OR

@GetMapping(value="/users",produces="application/json")
    @ResponseBody
    public List getUsers(){
        List users = userRepository.findAll();
        return users;
    }

OR Добавьте в свой класс @RestController

0 голосов
/ 15 мая 2019

Похоже, вы возвращаете объект JSON, затем реорганизуете его и анализируете.вот, наверное, почему?

   ngOnInit() {
      this.surgeonList = [
      ];
      console.log(this.value);
      this.httpclient.get('http://localhost:8080/users'
      ).subscribe(
          data => {
          this.surgeonList = data.map(doc=>{
          return {
              doc.lastname,
              icon: 'person'
            }
          })
              
              
          }
      );
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...