jquery - 捕获 $.ajax 响应中的错误,并显示异常
问题描述
我有以下调用 API 并缓存结果的代码(因此可以多次使用):
var requestCache = {};
function LoadDataFromApi(apiUrl) {
if (!requestCache[apiUrl]) {
requestCache[apiUrl] = $.ajax({
type: 'GET',
url: apiUrl,
dataType: "json"
});
}
return requestCache[apiUrl];
}
有时,API 会引发异常,我试图捕捉并显示该异常。根据 Firefox 调试器,当发生异常时,响应数据如下所示:
{
"Message":"An error has occurred.",
"ExceptionMessage":"Invalid object name 'Foo_Bar'.",
"ExceptionType":"System.Data.SqlClient.SqlException",
}
从JQuery 文档中,我看到里面有一个statusCode
对象$.ajax
,但我无法成功实现它。这里的答案很接近,但实际上并没有检索到异常消息。
从今天的各种搜索中,我已经走了这么远,但是 JSON 没有解析,我不知道问题出在哪里,因为 JSON 在其他地方使用时解析得很好:
function LoadDataFromApi(apiUrl) {
if (!requestCache[apiUrl]) {
requestCache[apiUrl] = $.ajax({
type: 'GET',
url: apiUrl,
dataType: "json",
statusCode: {
500: function (json) {
var j = JSON.parse(json);
alert(j.Message);
}
}
});
}
return requestCache[apiUrl];
}
如果有人能在我的代码中发现问题,我将不胜感激?
解决方案
我们可以过去吗
public class theException
{
public string Message { get; set; }
public string ExceptionMessage { get; set; }
public string ExceptionType { get; set; }
}
public class EvilDrController : ApiController
{
public theException GetContrivedException()
{
var exception = new theException
{
ExceptionMessage = "Invalid object name 'Foo_Bar'.",
ExceptionType = "System.Data.SqlClient.SqlException",
Message = "An error has occured"
};
return exception;
}
}
html 文件或 cshtml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>EvilDr</title>
</head>
<body>
<div>
<h2>Parse JSON</h2>
</div>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
<script>
//or whatever uri you want
var uri = 'api/evildr';
$(document).ready(function () {
// Send an AJAX request
$.getJSON(uri)
.done(function (data) {
var j = JSON.stringify(data)
alert(j)
});
});
</script>
</body>
</html>
推荐阅读
- ionic-framework - Ionic 4:如果模型是数字,则不选择离子选择
- javascript - 高(饼图)图表计算不正确
- vba - VBA代码将非空白单元格从一张纸复制到另一张纸
- python - Python正则表达式提取正斜杠之间的数字
- python - 是否可以将 Pandas groupby 对象拆分为更小的 groupby 对象?
- api - 天蓝色应用服务上的 WinHttpException
- npm - 对等依赖关系也是链接 npm 模块的开发依赖关系,它充当单独的实例
- android - 如何通过命令行安装 Android 模拟器皮肤文件夹?
- python - tensorflow 数据集滑动窗口批处理不起作用?
- linux - 只提取
在 Mac 中使用 bash 在 plist 中