Mit jQuery:
$.ajax({
url:'http://www.example.com/somefile.ext',
type:'HEAD',
error: function()
{
//file not exists
},
success: function()
{
//file exists
}
});
BEARBEITEN:
Hier ist der Code zum Überprüfen des 404-Status ohne Verwendung von jQuery
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
Kleine Änderungen und es könnte stattdessen nach dem Status HTTP-Statuscode 200 (Erfolg) suchen.
BEARBEITEN 2: Da die Synchronisierung von XMLHttpRequest veraltet ist, können Sie eine Dienstprogrammmethode wie diese hinzufügen, um sie asynchron auszuführen:
function executeIfFileExist(src, callback) {
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (this.readyState === this.DONE) {
callback()
}
}
xhr.open('HEAD', src)
}
OnReadyStateChange
, bevor Sie HTTP_STATUS überprüfen.Ein ähnlicher und aktuellerer Ansatz.
quelle
$.ajax
scheint besser, wenn es abwärtskompatibler ist, oder?Das funktioniert bei mir:
quelle
Ich habe dieses Skript verwendet, um ein alternatives Bild hinzuzufügen
HTML:
http://wap.w3schools.com/jsref/event_onerror.asp
quelle
Solange Sie Dateien in derselben Domäne testen, sollte dies funktionieren:
Bitte beachten Sie, dass in diesem Beispiel eine GET-Anforderung verwendet wird, die neben dem Abrufen der Header (alles, was Sie benötigen, um zu überprüfen, ob die Datei vorhanden ist) die gesamte Datei abruft. Wenn die Datei groß genug ist, kann es eine Weile dauern, bis diese Methode abgeschlossen ist.
Der bessere Weg, dies zu tun, wäre, diese Zeile zu ändern:
req.open('GET', url, false);
zureq.open('HEAD', url, false);
quelle
async: false
Der Synchronbetrieb in Firefox Version 30.0 und höher sowie in neueren / aktuellen Versionen von Chrome ist aufgrund der ungünstigen Benutzererfahrung veraltet. Ein versuchter Gebrauch führt zu einem Fehler. Sollteasync: true
mit Rückruffunktion für den asynchronen Betrieb verwendet werden.Beim Versuch, die Antwort auf diese Frage auszuführen, trat ein domänenübergreifendes Berechtigungsproblem auf.
Es scheint großartig zu funktionieren, hoffe das hilft jemandem!
quelle
So geht's mit ES7, wenn Sie Babel Transpiler oder Typescript 2 verwenden:
In Ihrem anderen
async
Bereich können Sie dann leicht überprüfen, ob eine URL vorhanden ist:quelle
Ich verwende dieses Skript, um zu überprüfen, ob eine Datei vorhanden ist (es behandelt auch das Cross-Origin-Problem):
Beachten Sie, dass der folgende Syntaxfehler ausgelöst wird, wenn die zu überprüfende Datei kein JSON enthält.
quelle
Ein asynchroner Aufruf, um festzustellen, ob eine Datei vorhanden ist, ist der bessere Ansatz, da er die Benutzererfahrung nicht beeinträchtigt, indem er auf eine Antwort vom Server wartet. Wenn Sie
.open
mit dem dritten Parameter auf false aufrufen (wie in vielen obigen Beispielen zum Beispiel)http.open('HEAD', url, false);
), handelt es sich um einen synchronen Aufruf, und Sie erhalten eine Warnung in der Browserkonsole.Ein besserer Ansatz ist:
Quelle: https://xhr.spec.whatwg.org/
quelle
.open
mit dem dritten Parametersatz aufzurufentrue
, um sicherzustellen, dass er asynchronclient.open("HEAD", address, true);
aufgerufen wird , wie dieser @PierreFür einen Client-Computer kann dies erreicht werden durch:
Dies ist mein Programm zum Übertragen einer Datei an einen bestimmten Speicherort und zeigt eine Warnung an, wenn sie nicht vorhanden ist
quelle
JavaScript-Funktion zum Überprüfen, ob eine Datei vorhanden ist:
quelle
Erstellt zuerst die Funktion
Nach Verwendung der Funktion wie folgt
quelle
Dies ist eine Anpassung an die akzeptierte Antwort, aber ich konnte nicht das bekommen, was ich brauchte, und musste testen, ob dies funktioniert hat, da es eine Vermutung war, also stelle ich meine Lösung hier vor.
Wir mussten überprüfen, ob eine lokale Datei vorhanden war, und die Datei (eine PDF-Datei) nur öffnen lassen, wenn sie vorhanden war. Wenn Sie die URL der Website weglassen, ermittelt der Browser automatisch den Hostnamen, sodass er in localhost und auf dem Server funktioniert:
quelle
Sie müssten lediglich eine Anfrage an den Server senden, damit dieser die Prüfung durchführen kann, und dann das Ergebnis an Sie zurücksenden.
Mit welchem Servertyp möchten Sie kommunizieren? Möglicherweise müssen Sie einen kleinen Dienst schreiben, um auf die Anfrage zu antworten.
quelle
Dies geht nicht auf die Frage des OP ein, sondern für alle, die Ergebnisse aus einer Datenbank zurückgeben: Hier ist eine einfache Methode, die ich verwendet habe.
Wenn der Benutzer keinen Avatar hochladen
avatar
würdeNULL
, wäre das Feld , also würde ich ein Standard-Avatar-Bild aus demimg
Verzeichnis einfügen .dann
quelle
Es funktioniert für mich, verwenden Sie iframe, um Browser zu ignorieren, die GET-Fehlermeldung anzeigen
quelle
Ich wollte eine Funktion, die einen Booleschen Wert zurückgibt. Ich stieß auf Probleme im Zusammenhang mit dem Schließen und der Asynchronität. Ich habe es so gelöst:
quelle