gpt4 book ai didi

javascript - 语法错误: Unexpected token < in JSON Aurelia

转载 作者:行者123 更新时间:2023-11-28 17:32:37 25 4
gpt4 key购买 nike

我正在使用 Aurelia 构建 Web 应用程序。我想显示一个从 ListView 传递参数(id)的详细信息页面。这是我的(简化的,“Detail”是基本数据类) Controller 代码:

    [HttpGet("[action]")]
public IActionResult GetDetail(int _id)
{
var b = new Detail()
var customjson = JsonConvert.SerializeObject(b, Formatting.Indented);
return Ok(customjson);
}

详细信息是通过detail.ts类中的activate()方法获取的:

    constructor(http: HttpClient) {
this.http = http;
}

activate(params: any) {
this.http.fetch("api/Begroting/GetBegroting/" + params.id)
.then(result => result.json as Promise<Begroting>)
.then(data => {
this.begroting = data;
console.log(data);
});
}

但是,当通过列表页面加载详细信息页面时,会出现以下错误:

Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0. Testing the API via Swagger yields valid json and a status code 200.

暗示 API(调用)有问题。

最佳答案

OP 已经解决了他的问题,但为了向 future 的读者澄清可能发生的情况:

SyntaxError: Unexpected token < in JSON是当您请求不存在的资源时通常会发生的错误。服务器返回标准404 HTML 错误响应。

当客户端尝试将 HTML 文档解析为 JSON 时,客户端将会失败(这是失败的 < 标记的第一个 <html>)。

客户端需要状态代码而不是错误页面

这里更深层次的问题是服务器实际上应该返回 404 状态代码响应,以便客户端知道请求失败,并且不会尝试像成功一样处理它。 404 错误 html 页面伴随着 200毕竟,状态代码。

因此,除了修复客户端的请求 URL(或服务器端的路由)之外,还应配置服务器和/或客户端,以便返回正确的状态代码。我相信Accept: application/json尽管我还没有测试过,但它已经解决了这个问题。

OP 的替代解决方案:

RESTful 服务背后的理念是您的 URI 代表资源;查询字符串非常适合在列表上排序/过滤/分页参数等。 ID 属于路径,而不是查询字符串。

将您的路线属性更改为:[HttpGet("[action]/{_id}")]并且您的初始客户端代码应该可以再次工作。

关于javascript - 语法错误: Unexpected token < in JSON Aurelia,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49953837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com