2010-10-12 12 views
18

To pytanie zostało opublikowane na stosie wcześniej, ale żadne nie jest tak szczegółowe, co staram się zrozumieć.Sprawdzanie, czy adres URL jest uszkodzony w JavaScript

Najprostszy sposób sprawdzenia, czy adres URL jest poprawny, aby wysłać żądanie nagłówka http. Ale w jaki sposób użyć tego do określenia adresu URL?

Znalazłem to w poprzednim poście:

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

Ale to nie wydaje się działać w Firebug dla kilku powodów.

Moje przeprosiny z wyprzedzeniem za bycie głupim.

+0

Czy Firebug daje żadnych błędów? Mam nadzieję, że robisz XHR na swoim własnym serwerze, a nie na innej stronie (w odniesieniu do tej samej zasady pochodzenia). Kopiuję wklejony kod w firebug i działa dobrze i zwraca true/false –

+1

Piszę to jako 'urlExists (" http://www.stackoverflow.com/ ");' i to nie działa. – Trip

Odpowiedz

35

polecam użyć jQuery dla prawidłowych żądań AJAX cross-browser:

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

Zastosowanie:

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

+1, ale czy nie chcesz sprawdzić kodów statusu innych niż 200 i 404? Może to być 500 lub 304, itd. –

+0

Czy twoje stwierdzenie w twoim kompletnym brakującym jest '{}'? – Trip

+0

@Neil: w rzeczy samej, należy go rozszerzyć, aby sprawdzić więcej kodów statusu. @Trip: nie, możesz wykonać jedną instrukcję bez '{}' – jAndy

Powiązane problemy