2012-02-08 66 views
2

使用JavaScript或jQuery的,我怎麼能檢查,如果一個外部鏈接可用?jQuery的檢查外部鏈接

$.ajax()呼叫不可用,因爲它違反SOP(與here相同的問題)。我看了一下JSONP,但我想知道是否有一個更直接的解決方案,因爲我不希望加載從外部服務器中的任何數據;我需要的只是檢查它是否可達。


EDIT(回答)

我解決了它與下面的代碼:

$.ajax({url: 'http://www.example.com', 
     type: 'GET', 
     dataType: 'jsonp', 
     complete: function(jqXHR, textStatus) { 
       console.log(jqXHR.status); // '200' = url reachable 
     }, 
     timeout: 2000 
}); 

現在唯一的問題是,我得到一個Parse error,但在任何情況下,它可如果檢查外部鏈接正在工作。

+0

它似乎對你有幫助:http://stackoverflow.com/questions/635231/javascript-checking-if-page-is-valid – ParPar 2012-02-08 09:32:19

回答

2

你可以使用YQL檢查網址是否通過其JSONP接口可用。

YQL Console

+0

如果我理解的很好,要使用YQL,我需要對外部鏈接進行GET調用,例如'http://query.yahooapis.com/...'。這會給我同樣的問題,因爲我無法使用Javascript接收外部數據。也許我還沒有明白......我錯過了什麼嗎? – Pablo 2012-02-08 09:29:01

+0

@Pablo是的,你是。對JSONP進行一些研究,並將其用於YQL響應。 – alex 2012-02-08 09:30:26

+0

最後,我解決了另一種方式,但你的答案幫助我知道從哪裏開始。 – Pablo 2012-02-09 07:28:23

1

是,在支持Flash的瀏覽器可以使用this插件。它與本地xhr具有相同的api。此外,如果瀏覽器中沒有Flash插件,您仍然可以訪問其他域。在某些瀏覽器中,如果您的目標域響應具有以下標頭,則不會出現錯誤。

Access-Control-Allow-Methods: GET, POST, OPTIONS 
Access-Control-Allow-Credentials: true 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Headers: Content-Type, * 

將*替換爲適當的域。

以上所有技術僅適用於第二個域在您控制之下的情況。如果沒有,那麼你必須使用代理Jleagle說。