JQuery $ .ajaxを介して画像パスを読み込んでいます。画像を表示する前に、画像が実際に存在するかどうかを確認したいと思います。画像の読み込み/準備完了イベントなどを使用して、ファイルパスが有効であることを確認できますか?
.myimageを表示するように設定:なし、次のようなことを望んでいます
$(".myimage").attr("src", imagePath);
$(".myimage").load(function() {
$(this).show();
});
そのようなことは可能ですか?
まあ、あなたはバインドできます .error()
ハンドラ...
このような、
$(".myimage").error(function(){
$(this).hide();
});
まあ、あなたはすでに load-event で大丈夫です
$(".myimage").load(function() {
$(this).show();
});
これの問題は、JavaScriptが無効になっている場合、画像が表示されないことです...
試してください:
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
}
次に使用します
if(urlExists('urlToImgOrAnything') == 200) {
// success
}
else {
// error
}
古いスレッドですが、改善できると思います。 OPに断続的な問題が発生していることに気付きました。これは、イメージのロードとエラーチェックの同時実行が原因である可能性があります。最初に画像をロードしてから、エラーを確認することをお勧めします。
$(".myimage").attr("src", imagePath).error(function() {
// do something
});
AJAX=リクエストを既に実行しているので、AJAXをサポートしているサーバー側アプリにこれをオフロードします。サーバーからファイルが存在するかどうかを確認するのは簡単です。結果を指定するために送り返すデータに変数を設定できます。
この質問は2年前のものですが、これを見る人のためのエラーハンドラのより良い使用例を次に示します。
$("img")
.error(function(){
$(this).hide();
})
.attr("src", "image.png");
イベントをキャッチするためにイメージをロードする前に、エラーハンドラーをアタッチする必要があります。
これは私がやったことです:
$.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
}
});