jquery - 即使使用了失败函数,带有 422 状态的 jQuery ajax 调用也会导致 chrome / edge 控制台错误
问题描述
语境
从计划工具调用 API 以返回雇主的事件。如果某个雇主没有任何事件,API 将返回 422(相当奇怪的行为,我只希望一个空数组 - 但我无法控制该 API)。
我正在使用 javascript/jquery (在科尔多瓦应用程序中,但这不重要?)并在浏览器中运行。如果 API 返回 1 个或多个事件,一切都会很好。
代码片段
let eventPromises = [];
let projectPromises = [];
let completeEvents = [];
$.ajax({
url: baseUrl + `resources/${ID}/events`,
type: "GET",
headers: {
"apikey": apikey
}
}).then(function(events) {
events.entities.forEach(event => {
eventPromises.push(
//get Event data
$.ajax({
url: baseUrl + `events/${event[0].entityValue}`,
type: "GET",
headers: {
"apikey": apikey
}
}).then(function(detailedEvent) {
projectPromises.push(
//Get project data
$.ajax({
url: baseUrl + `resources/${detailedEvent.entities[0][23].entityValue}`,
type: "GET",
headers: {
"apikey": apikey
}
}).done(function(project) {
let eventObj = new Object();
eventObj.eventData = detailedEvent;
eventObj.projectData = project;
completeEvents.push(eventObj)
}));
}));
});
}).then(function() {
Promise.all(eventPromises)
.then(() => {
Promise.all(projectPromises)
.then(() => {
if (completeEvents != null && completeEvents.length > 0) {
//Here everything works and I append some html
})
})
})
错误(在浏览器控制台中) jquery.min.js:2 GET http://localhost:3000/proxy/https*****events%3FbeginDate%3D01%2F01%2F2021%26endDate%3D16%2F01%2F2021 422 (422 )
问题
有谁看到我做错了什么?
也可以随意评论代码。我知道它可能看起来很奇怪(链接,并且可能是错误的原因),但这是我现在能想到的最好的。我需要调用多个端点来获取所有数据(api 不提供批处理或任何东西)。
谢谢您的帮助。
解决方案
推荐阅读
- node.js - 如何停止 expressjs 服务器
- sql - 如何连接两个表,然后计算 SQL Server 中特定月份的不同值的数量?
- postgresql - 整数的无效输入语法:“0A000” 上下文:PL/pgSQL 函数触发器更新
- python - 如何在保留标记的同时重绘 seaborn 传奇条目?
- php - 有没有办法使用 Google API(通过 PHP)获得“HTTP Referrer”限制?
- python - 如何在存储在列表中的连续字典中添加元素
- javascript - Node.js 中的 bcrypt() 方法中的异步函数是如何工作的?
- javascript - 我将一个函数(不是谓词)传递给 Array.Filter,它返回给我整个数组 - 它是如何工作的?
- c# - Entity Framework Core Put 请求仅部分更新不会更新文件
- asp.net-core - ASP.NET Core 5 如何在 _ViewImports.cshtml 中注入动态类型对象