2013-07-18 60 views
0

我试图找出是否使用下面的代码在JavaScript中存在的图像:的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我没有收到成功的消息。

我希望有人能告诉我我要去哪里错了!

感谢

+0

当然,如果该文件不存在,服务器返回'200',它是做错了 –

+0

喜服务器,没有图像不跨域。 – hlh3406

+0

嗨,这是一个搜索工具,所以它一次返回多个请求,然后显示一个404不存在的图像,并且不能显示 - 并且在控制台中它显示我上面提供的信息 - “失败” - 但如果图像确实存在,它会显示一个200,但不会进入我的成功功能并显示console.log(成功) – hlh3406

回答

3

通过看你实际上是在做什么,你不这样做的ajax,而是依靠图片,如果返回的数据是会抛出错误它可能是明智的不是(通过浏览器)图像。

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 
+0

好的 - 我会放弃这个 - 谢谢你! – hlh3406