2012-04-20 96 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 
        } 
       } 
      });​