You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次开发Angular应用遇$http.get请求错误:SyntaxError: Unexpected token n

解决Angular $http.get JSON解析错误:SyntaxError: Unexpected token n in JSON at position 17

嘿,这个错误其实指向性很强——Angular在尝试解析你从angular/orders.json获取的内容时,发现JSON格式不合法,在第17个字符的位置碰到了意外的n,直接导致JSON.parse解析失败。咱们一步步来排查解决:

1. 优先检查orders.json的语法问题

JSON对语法要求非常严格,哪怕一个小疏漏都会触发解析错误。你打开这个文件,定位到第17个字符的位置,看看是不是犯了这些常见错误:

  • 键名没有用双引号包裹(比如写了{name: "Order1"}而不是{"name": "Order1"})
  • 字符串用了单引号而非双引号(JSON完全不允许单引号)
  • 数组/对象最后一项后面多写了逗号
  • 加了JSON不支持的注释(// 或 /* */ 注释在JSON里是非法内容)

给你一个符合代码预期的正确JSON示例(因为你的sort.orders是数组类型):

[
  {"id": 1, "title": "订单1", "amount": 99},
  {"id": 2, "title": "订单2", "amount": 199}
]

2. 验证JSON的合法性

如果肉眼看不出问题,可以把orders.json的内容复制到浏览器控制台测试,比如输入:

JSON.parse('这里粘贴你的JSON内容')

控制台会给出更精准的错误位置和原因,跟着提示修正即可。

3. 确认请求返回的内容是否正确

有时候可能是文件路径写错了,导致请求返回的不是JSON,而是404的HTML错误页面,这时候解析自然会失败。你可以打开浏览器开发者工具(按F12),切换到Network标签,找到orders.json的请求,查看Response标签里的内容,确认返回的是你预期的JSON,而非错误页面。

4. 优化Angular代码(让它更健壮)

另外提一句,你代码里用的success方法已经被Angular弃用了,建议换成then和catch来处理请求,这样能更清晰地捕获错误,方便后续排查:

var app = angular.module('sortApp', [])
app.controller('sortController', ['$http', function ($http) {
  var sort = this;
  sort.orders = [];
  $http.get('angular/orders.json')
    .then(function (response) {
      sort.orders = response.data;
    })
    .catch(function (error) {
      console.error('请求或JSON解析出错:', error);
      // 这里可以给用户显示友好的错误提示
    });
}]);

这样下次再出问题,你能在控制台看到更详细的错误信息,包括实际返回的响应内容,排查起来会更高效。

内容的提问来源于stack exchange,提问作者Max Gavrilov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:38:16