0

以下のコードを使用して、JavaScript に画像が存在するかどうかを調べようとしています。

var image_url = 'http://www.tester.co.uk/shop/images/product_thumbs/t_' + prod.images.toLowerCase() + '.jpg';

        $.ajax({
            url: image_url,
            type:'HEAD',
            error:
            function(msg_no){
                console.log("fail."); 
                markup += "<td class='movie-image'><img src='/shop/html_templates/files/images/default-category-image.gif'/></td>";
            },
            success:
            function(msg_yes){
                console.log("success."); 
                markup +=  "<td class='movie-image'><img src='/shop/images/product_thumbs/t_" + prod.images.toLowerCase() + ".jpg'/></td>";
            }
        });

404 ページでコンソール ログに失敗メッセージが表示されますが、200 を返すページでは成功メッセージが表示されません。

誰かが私が間違っている場所についてアドバイスしてくれることを願っています!

ありがとう

4

1 に答える 1

3

実際に何をしているのかを見ると、返されたデータが (ブラウザーによって理解された) 画像でない場合にエラーをスローするImageajaxに頼る代わりに、これを行わない方が賢明かもしれません。

var img = new Image();
img.onerror = function (msg_no) {
    console.log("fail."); 
    markup += "<td class='movie-image'><img src='/shop/html_templates/files/images/default-category-image.gif'/></td>";
}
img.onload = function (msg_yes) {
    console.log("success."); 
    markup +=  "<td class='movie-image'><img src='/shop/images/product_thumbs/t_" + prod.images.toLowerCase() + ".jpg'/></td>";
}
img.src = image_url; // fetch after listeners attached
于 2013-07-18T14:50:02.323 に答える