Z jQuery:
$.ajax({
url:'http://www.example.com/somefile.ext',
type:'HEAD',
error: function()
{
//file not exists
},
success: function()
{
//file exists
}
});
EDYTOWAĆ:
Oto kod do sprawdzania statusu 404 bez użycia jQuery
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
Małe zmiany i może zamiast tego sprawdzić status kod statusu HTTP 200 (sukces).
EDYCJA 2: Ponieważ synchronizacja XMLHttpRequest jest przestarzała, możesz dodać taką metodę narzędzia, aby wykonać to asynchronicznie:
function executeIfFileExist(src, callback) {
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (this.readyState === this.DONE) {
callback()
}
}
xhr.open('HEAD', src)
}
OnReadyStateChange
zdarzeniem przed sprawdzeniem HTTP_STATUS.Podobne i bardziej aktualne podejście.
źródło
$.ajax
wydaje się lepszy, jeśli jest bardziej kompatybilny wstecz, prawda?To działa dla mnie:
źródło
użyłem tego skryptu, aby dodać alternatywny obraz
HTML:
http://wap.w3schools.com/jsref/event_onerror.asp
źródło
Dopóki testujesz pliki w tej samej domenie, powinno to działać:
Uwaga: w tym przykładzie użyto żądania GET, które oprócz pobrania nagłówków (wszystko, czego potrzebujesz, aby sprawdzić, czy plik istnieje), pobiera cały plik. Jeśli plik jest wystarczająco duży, wykonanie tej metody może trochę potrwać.
Lepszym sposobem na to byłoby zmiana tej linii:
req.open('GET', url, false);
nareq.open('HEAD', url, false);
źródło
async: false
, synchroniczne działanie w przeglądarce Firefox w wersji 30.0 i nowszych oraz w najnowszych / bieżących wersjach Chrome jest przestarzałe ze względu na niekorzystne wrażenia użytkownika. Próba użycia powoduje błąd / błąd. Należy używaćasync: true
z funkcją wywołania zwrotnego do działania asynchronicznego.Podczas próby uruchomienia odpowiedzi na to pytanie otrzymywałem problem z uprawnieniami między domenami, więc wybrałem:
Wygląda na to, że działa świetnie, mam nadzieję, że to komuś pomoże!
źródło
Oto jak to zrobić ES7, jeśli używasz transpilatora Babel lub Typescript 2:
Następnie w swoim drugim
async
zakresie możesz łatwo sprawdzić, czy adres URL istnieje:źródło
Używam tego skryptu, aby sprawdzić, czy plik istnieje (obsługuje także problem krzyżowego pochodzenia):
Zauważ, że następujący błąd składniowy jest generowany, gdy sprawdzany plik nie zawiera JSON.
źródło
Wywołanie asynchroniczne, aby sprawdzić, czy plik istnieje, jest lepszym rozwiązaniem, ponieważ nie pogarsza wrażeń użytkownika, czekając na odpowiedź z serwera. Jeśli wykonasz wywołanie
.open
z trzecim parametrem ustawionym na false (jak na przykład w wielu przykładach powyżej)http.open('HEAD', url, false);
), jest to połączenie synchroniczne i pojawi się ostrzeżenie w konsoli przeglądarki.Lepszym podejściem jest:
źródło: https://xhr.spec.whatwg.org/
źródło
.open
z trzecim zestawem parametrów,true
aby upewnić się, że wywołuje go asynchronicznie, na przykładclient.open("HEAD", address, true);
@PierreW przypadku komputera klienckiego można to osiągnąć poprzez:
To jest mój program do przesyłania pliku do określonej lokalizacji i wyświetla alert, jeśli nie istnieje
źródło
Funkcja JavaScript, aby sprawdzić, czy plik istnieje:
źródło
Najpierw tworzy funkcję
Po użyciu funkcji w następujący sposób
źródło
To jest dostosowanie do zaakceptowanej odpowiedzi, ale nie mogłem uzyskać tego, czego potrzebowałem od odpowiedzi, i musiałem przetestować, czy zadziałało, ponieważ było przeczucie, więc tutaj zamieszczam moje rozwiązanie.
Musieliśmy sprawdzić, czy plik lokalny istnieje i zezwolić na otwarcie pliku (PDF) tylko wtedy, gdy istnieje. Jeśli pominiesz adres URL witryny, przeglądarka automatycznie określi nazwę hosta - dzięki czemu będzie działać w localhost i na serwerze:
źródło
To, co musisz zrobić, to wysłać do serwera żądanie wykonania kontroli, a następnie odesłać wynik.
Z jakim typem serwera próbujesz się komunikować? Może być konieczne napisanie małej usługi, aby odpowiedzieć na żądanie.
źródło
To nie dotyczy pytania PO, ale dla każdego, kto zwraca wyniki z bazy danych: oto prosta metoda, której użyłem.
Jeśli użytkownik nie załadował awatara,
avatar
pole byłobyNULL
, więc wstawiłbym domyślny obraz awatara zimg
katalogu.następnie
źródło
Działa dla mnie, użyj iframe, aby zignorować przeglądarki wyświetlające komunikat o błędzie GET
źródło
Chciałem funkcji, która zwróciłaby wartość logiczną, napotkałem problemy związane z zamknięciem i asynchronicznością. Rozwiązałem w ten sposób:
źródło