(我认为这可能是 jquery 中的一个错误,不确定)
如果我像这样使用 jQuery 进行 ajax 调用:
$.ajax({
type: "GET",
url: url,
dataType: "json",
crossDomain: true
}).done((result) => {
if (result == null) {
d.resolve();
return;
} else if (result.Results != null) {
if (!$.isArray(result.Results)) {
d.resolve([result.Results]);
return;
} else {
d.resolve(result.Results);
return;
}
} else {
if (!$.isArray(result)) {
d.resolve([result]);
return;
}
}
d.resolve(result);
}).fail((e, description, error) => {
d.reject(error);
});
因此,如果服务器返回 404 或 403 或其他什么,则调用失败函数。但是服务器是 REST,所以它正确,如果找不到任何东西,返回“未找到”,但在正文中也会有错误描述。
奇怪的是,失败方法中的jQuery e 属性(是的,打字稿,但常规也是如此)具有 e.status == 200 和 statusText = "success" 即使它失败了。状态值应该是 403 或 404,responseText 应该是返回的任何值。
(所有这些都可以在没有 jsonp 的情况下正常工作。)
所以我的问题是,我如何让它向我显示来自服务器的真实返回值以及它声称它没有执行的函数中的实际描述性错误消息?
谢谢!