asp.net - 解析ajax json响应
问题描述
我无法获取 JSON 对象的数据。
这是我的 API 操作:
public string GetVideoInfo(uint videoID)
{
ApiVideoInfo videoInfo = new ApiVideoInfo()
{
Likes = BitVidDb.GetLikes(videoID),
Dislikes = BitVidDb.GetDislikes(videoID),
Views = BitVidDb.GetViews(videoID),
};
return JsonConvert.SerializeObject(videoInfo);
}
如果我在浏览器中调用 API,它会返回:
"{\"查看次数\":396,\"喜欢\":1,\"不喜欢\":0}"
但是,当我调用这个 ajax 函数时:
$.ajax({
url: '/API/Video/GetVideoInfo/25',
dataType: 'application/json',
complete: function (data) {
var json = JSON.parse(data);
alert(json["Views"]);
},
});
它给了我以下错误:
SyntaxError:JSON.parse:JSON 数据的第 1 行第 2 列出现意外字符
我使用 JSON.stringify 将其转换为字符串并输出:
{"readyState":4,"responseText":"\"{\\"Views\\":396,\\"喜欢\\":1,\\"不喜欢\\":0}\"","状态":200,"statusText":"OK"}
我需要采取一些额外的步骤来获取这些值吗?该请求似乎很好 Chrome 开发工具将其作为 api 的答案:
JSON {“视图”:396,“喜欢”:1,“不喜欢”:0}
提前致谢
简
解决方案
您只能解析字符串,而数据是一个对象。要将 json 作为字符串,我只需要使用 data.responseText 代替。
$.ajax({
url: '/API/Video/GetVideoInfo/25',
dataType: 'application/json',
complete: function (data) {
var json = JSON.parse(data.responseText);
alert(json["Views"]);
},
});
推荐阅读
- android - Galaxy s10 和 note10 上的 Android Webview 崩溃报告
- javascript - 如何在基本 Typescript 示例上增加 Mocha 测试的代码覆盖率?
- ios - 绘制跟随用户当前位置的 MKPolyline
- apache-flink - Flink DataStream[String] kafkaconsumer 转换为 Avro for Sink
- sql - 通过将表的舍入合并列的结果放在不同表的另一列中来创建视图
- azure-data-factory - 如果 ADF 数据流中的条件
- javascript - display:none 在 CSS 中有效,但在 jQuery 中无效
- http - 响应式流如何与 HTTP 一起工作?什么是反应式http?
- amazon-web-services - AWS SAM:构建失败错误:Docker 无法访问。Docker 需要运行才能在容器内构建
- linux - 是否需要使用 .PHONY 列出所有虚假目标?