2012-04-20 66 views
1

我想获取403禁止的错误的状态,我可以用php curl来做到这一点,但需要使用jQuery来做到这一点。使用jquery获取url状态

这是我的代码。

$.ajax({ 

    url: 'https://s3.amazonaws.com/isdukg/01-jaimeson-complete_2_step_mix-pulse.mp3', 
    type: 'GET', 
    crossDomain: true, 
    dataType: 'jsonp', 
    statusCode: { 
     403: function() { 
     alert("Forbidden"); 
     // or do something useful 
     } 
    } 
}); 

$.ajax({ 

    url: 'https://s3-eu-west-1.amazonaws.com/fkcreate/Angles%2C%20Circles%20and%20Triangles..%20Instrumental.mp3', 
    type: 'GET', 
    crossDomain: true, 
    dataType: 'jsonp', 
    statusCode: { 
     403: function() { 
     alert("Forbidden"); 
     // or do something useful 
     } 
    } 
}); 

其中一个网址,会产生一个403 Forbidden错误,你可以在这里看到,如果你打开控制台窗口并加载网页 - http://scaredem.users36.interdns.co.uk/

我似乎无法抓住这个错误做一些有用的东西带它。

+0

直接在浏览器中打开该URL产生具有一个错误消息的XML文档。 – 2012-04-20 10:50:31

+0

我唯一得到的是'服务器不支持RFC 5746,请参阅CVE-2009-3555'。 – Armatus 2012-04-20 10:52:09

回答

4

使用jQuery ajax,您可以使用statusCode属性将函数映射到HTTP响应状态代码。

$.ajax({ 
statusCode: { 
    403: function() { 
    alert("Forbidden"); 
    // or do something useful 
    } 
} 
}); 
+0

我认为这将是正确的方式,但它不起作用我已更新代码 – DCHP 2012-04-20 11:01:59

+0

也许响应代码不是403,至少当我测试您的URL时不会。顺便说一句,为什么dataType声明jsonp,如果你正在获取一个mp3文件? – supertopi 2012-04-20 11:09:48

+0

我尝试了很多不同的数据类型,从文档中找到它,我可以找到一个正确的音频文件它是他们的一个? – DCHP 2012-04-20 12:01:26

1

可能是一个timeout帮助你在这种情况下。如果请求在500毫秒内超时,则没有响应(我也试图获得响应状态,但没有运气)。

jsfiddle

  $.ajax({ 
       url: "https://s3-eu-west-1.amazonaws.com/fkcreate/Angles%2C%20Circles%20and%20Triangles..%20Instrumental.mp3", 
       type: "get", 
       dataType: 'jsonp', 
       crossDomain : true, 
       timeout : 500, // it is milliseconds 
       complete : function(xhr, responseText, thrownError) { 
        if(xhr.status == "200") { 
         alert(responseText); // yes response came 
        } 
        else{ 
         alert("No response"); // no response came 
        } 
       } 
      });​