Javascript 如何检查iframe的410状态?

Javascript 如何检查iframe的410状态?,javascript,jquery,ajax,iframe,http-status-code-410,Javascript,Jquery,Ajax,Iframe,Http Status Code 410,我正在构建一个页面,该页面使用SlideShareAPI从特定Slideshare用户获取有限的演示集,并输出一系列嵌入这些演示的iFrame 在大多数情况下,页面都按预期工作,但是API调用的其中一个演示文稿最近被删除,因此当页面加载该iframe时,浏览器返回410。不幸的是,Slideshare返回的XML中没有对象可用于确定该特定演示文稿是否已被删除 因此,在将特定的iframe添加到页面之前,我想检查410错误。让我感到困难的是,在进行API调用时,错误不会出现,而是在加载嵌入式ifr

我正在构建一个页面,该页面使用SlideShareAPI从特定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;
    }
}
});
$.ajax({
url:slideShareURL,
数据类型:“XML”,
成功:功能(数据){
var allSlides=x2js.xml2json(数据);
allSlides=allSlides.User.Slideshow;
对于(i=0;i
注:

  • slideShareURL在前面的代码中使用API定义
  • 我使用xml2json.js将从API接收的XML转换为json对象
  • allSlides是一组演示文稿,每个演示文稿包含一组对象,如幻灯片标题、id、下载URL等
  • 嵌入是包含完整iframe嵌入代码的对象

编辑:下面Christophe提供的答案几乎完美,但我必须添加一个闭包,以使第二个ajax调用在for循环中工作。嗯,这个解决方案怎么样:

$(function() {
    $.ajax({
        url: "www.domain.com/iframe",
        dataType: "jsonp",
        timeout: 5000,

        success: function () {
            $("#iframe").attr("src", "www.domain.com/iframe");
        },
        error: function (parsedjson) {
            if(parsedjson.status == "200") {
                $("#iframe").attr("src", "www.domain.com/iframe");
            } else {
                // Handle error
            }
        }
    });
});

Christophe提供的答案让我走上了正确的轨道,但是不可能在for循环中正确运行第二个ajax调用。经过进一步研究,我了解了闭包,并得出以下结论:

$.ajax({
    url: slideShareURL,
    dataType: 'XML',
    success: function(data) {
        var allSlides = x2js.xml2json(data);
        allSlides = allSlides.User.Slideshow;

        for (i = 0; i < allSlides.length; i++) {

        (function(i) {
                var slideURL = allSlides[i].SlideshowEmbedUrl;
                $.ajax({
                    url: slideURL,
                    success: function () {
                        document.getElementById('slides').innerHTML += allSlides[i].Embed;
                    },
                    error: function () {
                        console.log('Failed to load');
                    }
                })
            })(i);
        }
    }
});     
$.ajax({
url:slideShareURL,
数据类型:“XML”,
成功:功能(数据){
var allSlides=x2js.xml2json(数据);
allSlides=allSlides.User.Slideshow;
对于(i=0;i
谢谢您的回复。但是,除非我有误解,否则这个解决方案的问题是它假设一个网页上已经存在iframe——但是我能够生成410错误的唯一方法是在我的网页上动态地包含iframe,到那时已经太晚了。理想情况下,在将iframe代码包含到我的页面之前,我只想检查iframe代码的状态(也就是说),谢谢,事实上,这正是我所需要的,因为我只缺少了一部分——我意识到我在for循环和异步ajax调用方面遇到了问题。我解决了它,并将我的解决方案发布在下面。