我正在构建一个页面,该页面使用 Slideshare API 从特定的 Slideshare 用户中提取一组有限的演示文稿,并输出一系列嵌入了这些演示文稿的 iframe。
在大多数情况下,页面按预期工作,但是 API 调用的演示文稿之一最近被删除,因此当页面加载该 iframe 时,浏览器返回 410。不幸的是,Slideshare 返回的 XML 中没有对象可用于确定该特定演示文稿是否已被删除。
因此,我想在将该特定 iframe 添加到页面之前检查 410 错误。让我感到困难的是,在进行 API 调用时不会出现错误,而是在加载嵌入式 iframe 时出现错误,所以我不知道在哪里或如何进行适当的检查。
以下是相关代码:
$.ajax({
url: slideShareURL,
dataType: 'XML',
success: function(data) {
var allSlides = x2js.xml2json(data);
allSlides = allSlides.User.Slideshow;
for (i = 0; i < allSlides.length; i++) {
document.getElementById('slides').innerHTML += allSlides[i].Embed;
}
}
});
笔记:
- slideShareURL 在前面的代码中使用 API 定义
- 我正在使用 xml2json.js 将从 API 接收到的 XML 转换为 json 对象
- allSlides 是一组演示文稿,每个演示文稿都包含一组对象,例如幻灯片标题、ID、下载 URL 等
- Embed 是包含完整 iframe 嵌入代码的对象
编辑:下面 Christophe 提供的答案几乎是完美的,但我必须添加一个闭包以使第二个 ajax 调用在 for 循环中工作。