У меня есть следующий код, который вызывает 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 я вижу, что в $.ajax
есть объект statusCode
, но я не могу успешно реализовать это. ответ здесь близок, но на самом деле не извлекает сообщение об исключении.
Из различных поисков сегодня я получил это далеко, но 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];
}
Буду признателен, если кто-нибудь обнаружит проблему в моем коде, пожалуйста?