2010-10-12 44 views
18

這個問題已經發布在Stack之前,但沒有一個關於我想了解的內容。檢查一個URL是否在Javascript中被破壞

檢查URL是否正確以發送http頭部請求的最簡單方法。但你如何使用它來指定URL?

我發現這在以前的文章:

function UrlExists(url) { 
    var http = new XMLHttpRequest(); 
    http.open('HEAD', url, false); 
    http.send(); 
    return http.status!=404; 
} 

但它似乎並沒有在螢火蟲運行的幾個原因。

對於呆呆,我提前道歉。

+0

是螢火蟲發出任何錯誤?希望你在你自己的服務器上做XHR,而不是在另一個站點(重新制定相同的原始策略)。我複製粘貼代碼在螢火蟲,它工作正常,並返回真/假 – 2010-10-12 16:14:06

+1

我輸入它作爲'urlExists(「http://www.stackoverflow.com/」);'它不起作用。 – Trip 2010-10-13 11:57:39

回答

35

我建議使用jQuery的正確的跨瀏覽器的Ajax請求:

function UrlExists(url, cb){ 
    jQuery.ajax({ 
     url:  url, 
     dataType: 'text', 
     type:  'GET', 
     complete: function(xhr){ 
      if(typeof cb === 'function') 
       cb.apply(this, [xhr.status]); 
     } 
    }); 
} 

用法:

UrlExists('/path/script.pl', function(status){ 
    if(status === 200){ 
     // file was found 
    } 
    else if(status === 404){ 
     // 404 not found 
    } 
}); 
+5

+1,但是您不想檢查200和404以外的狀態代碼嗎?它可能是500或304等 – 2010-10-12 14:26:11

+0

你的if語句是否完整缺少'{}'? – Trip 2010-10-12 14:37:30

+0

@ Neil:事實上,它應該擴展到檢查更多的狀態代碼。 @Trip:不,你可以在沒有{{}的情況下做一個語句 – jAndy 2010-10-12 14:53:37