Ich lade einen Bildpfad über jQuery $ .ajax und bevor ich das Bild zeige, möchte ich prüfen, ob es tatsächlich existiert. Kann ich das Image load/ready -Ereignis oder ähnliches verwenden, um festzustellen, ob der Dateipfad gültig ist?
Nachdem .myimage für die Anzeige eingestellt ist: keine, hoffe ich, dass Sie so etwas tun
$(".myimage").attr("src", imagePath);
$(".myimage").load(function() {
$(this).show();
});
Ist so etwas möglich?
Nun, Sie können .error()
handler binden.
so was,
$(".myimage").error(function(){
$(this).hide();
});
na ja, deine ist schon okay mit load-event
$(".myimage").load(function() {
$(this).show();
});
das Problem dabei ist, wenn Javascript deaktiviert ist, wird das Bild nicht angezeigt ...
Versuchen:
function urlExists(testUrl) {
var http = jQuery.ajax({
type:"HEAD",
url: testUrl,
async: false
})
return http.status;
// this will return 200 on success, and 0 or negative value on error
}
dann benutze
if(urlExists('urlToImgOrAnything') == 200) {
// success
}
else {
// error
}
Ein alter Thread, den ich kenne, aber ich denke, er könnte verbessert werden. Ich habe festgestellt, dass OP intermittierende Probleme hat, die auf das Laden des Bildes und die gleichzeitige Fehlerprüfung zurückzuführen sind. Es ist besser, das Bild zuerst laden zu lassen und dann auf Fehler zu prüfen:
$(".myimage").attr("src", imagePath).error(function() {
// do something
});
Da Sie bereits eine AJAX -Anforderung durchführen, würde ich diese an die serverseitige App auslagern, die Ihr AJAX unterstützt. Es ist einfach, zu prüfen, ob eine Datei vom Server vorhanden ist. In den zurückgesendeten Daten können Sie Variablen festlegen, um die Ergebnisse anzugeben.
Diese Frage ist ein paar Jahre alt, aber hier ist eine bessere Beispielanwendung für den Fehlerbehandler für jeden, der sich das anschaut.
$("img")
.error(function(){
$(this).hide();
})
.attr("src", "image.png");
Sie müssen den Error-Handler anhängen, bevor Sie versuchen, das Image zu laden, um das Ereignis abzufangen.
Quelle: http://api.jquery.com/error/
Das habe ich von mir gemacht:
$.get( 'url/image', function(res){
//Sometimes has a redirect to not found url
//Or just detect first the content result and get the a keyword for 'indexof'
if ( res.indexOf( 'DOCTYPE' ) !== -1 ) {
//not exists
} else {
//exists
}
});