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

通过查看您实际在做什么,您最好不要通过 Image 来执行此操作ajax,而是依赖Image ,如果返回的数据也不是(被浏览器理解的)图像,则会引发错误。

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 回答