2013-08-28 35 views
0

我正在測試通知服務器關閉時處理UI的功能。加載代碼實際上工作正常,但如果服務器無法訪問,則沒有任何回調似乎觸發。當主機不響應時檢測來自跨域AJAX請求的錯誤

下面是加載代碼和的jsfiddle:http://jsfiddle.net/xykKf/2/

$(document).ready(function() { 
    $.ajax({ 
     url: "http://localhost:51437/Scripts/framework.js", 
     dataType: "script", 
     error: handleError, 
     success: function() { 
      if (!("OFrame" in window)) { 
       handleError(); 
      } else { 
       alert("success"); 
      } 
     }    
    }); 

    function handleError() { 
     alert("error"); 
    } 
}); 

如果你運行這個(我故意使用localhost,這樣的請求將失敗)沒有回調會火,但請求會失敗。如何有效處理無法返回響應的跨域請求?

回答

0

這是預期的行爲。

注意:此處理程序不針對跨域腳本和 跨域JSONP請求調用。

未針對跨域腳本和跨域jsonp請求觸發錯誤回調。

如果有一個解決方案一直工作jQuery可能已經實現它。

+0

是否推薦使用setTimeout來處理錯誤並取消成功回調中的超時? – Parker

+0

這可以工作,但它不會阻止控制檯中的錯誤。另外,你應該等待setTimeout多久? –

+0

@Parker'$ .ajax'已經有一個'timeout'選項可能是合適的。 – apsillers