在设置 iframe 的 SRC 时捕获 500 响应

本文关键字:响应 SRC 设置 iframe | 更新日期: 2023-09-27 17:56:07

我正在做类似于以下代码的事情:

$('#myIFrame').attr('src', 'dosomethingthatreturnsadocument.aspx');

被调用的页面返回一个文档,无论是word文档,pdf等,并提示用户打开/保存,通常工作正常。

我遇到的问题是,如果服务器端出现问题,则返回 500 响应。我似乎没有任何办法捕捉错误。

我已经尝试过在那条线周围捕捉。iframe的.error函数似乎没有抓住它。

有谁知道一种好方法可以让我抓住 500,以便我可以对 UI 采取相应的行动?

在设置 iframe 的 SRC 时捕获 500 响应

您应该首先检查响应,然后在 iframe 中设置它。你可以尝试这样的事情:

var loading_url = "/dosomethingthatreturnsadocument.aspx"
$.ajax({
url: loading_url,
type: 'GET',
complete: function(e, xhr, settings){
     if(e.status === 200){
          $('#myIFrame').attr('src', 'dosomethingthatreturnsadocument.aspx');
     }else if(e.status===500){
      // do something
     }
  }
});

您可以在加载 iframe 后立即使用 jQuery 检查它的内容,并检查它是否是错误页面,例如检查页面的标题。

$(".loadbutton").on('click',function(){
  $(".iframe").attr("src", "http://www.example.org/")
  .load(function(){
    if($(this).contents().find("title").first().text() == "error"){
      //Error occured!
    }else{
      //Works!
      alert( "loaded!" );
    }
  })
})

您可以尝试将 if 语句更改为您喜欢的其他语句。