angular - 语法错误:JSON.parse 中位置 0 的 JSON 中的意外标记 <) 在 XMLHttpRequest.onLoad
问题描述
希望这不是一个愚蠢的问题。连接 ionic 和 java springboot ,当应用程序在浏览器中实时服务并且数据正确显示时,没有错误消息。但是在 android 设备上测试时出现 SyntaxError: Unexpected token < in JSON at JSON.parse () 位置 0 错误。
我四处搜索并意识到这个问题与 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;
}
获取请求响应正确记录数据:
[
{
"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"
}
]
但是在 chrome 上远程检查时得到了这个
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 作为响应: 在此处输入图像描述
解决方案
执行以下操作:戴上@ResponseBody
控制器
@GetMapping("/users")
@ResponseBody
public List getUsers(){
List users = userRepository.findAll();
return users;
}
或者
@GetMapping(value="/users",produces="application/json")
@ResponseBody
public List getUsers(){
List users = userRepository.findAll();
return users;
}
或 Annonate 你的班级@RestController
推荐阅读
- python - 在这种情况下如何使用 unwrap?
- json - 使用 JQ 将 JSON 解压缩为单个 JSON 元素
- php - 如何搜索数据关系
- excel - Excel VBA 查找功能 - 区分多个结果
- python-3.x - 如何在 np.where 中制作无穷大值标志 o
- vue.js - vue - axios - ISO-8859-1 需要帮助(字符集)
- gatling - 如何从 Gatling Feeder 访问 Java 对象
- android - 带有 Firebase UI 的 Firebase 电话身份验证存在 SafetyNet 问题
- python-3.x - 如何矢量化此 python 代码或使其高效?使用映射转换数组
- python - 对齐 Word 表格