2013-10-07 35 views
3

我的页面中有一个<img />元素,它的src属性由Javascript定期更改。从图像错误处理程序中读取响应标头

src属性的变化,我的代码在服务器上检查:

  1. 在用户登录?
  2. 图像是否存在?

那么它相应地发送一个响应,或者是图像或与错误报头的响应(状态403 Forbidden404 Not Found)。

这里是我的问题:我处理IMG错误与下面的代码

$(function(){ 
    var $img = $('#test_image'); 
    $img.on('error',function(e){ 
     // here, I need to read the headers (at least status code) 
     console.log(e); 
    }).attr('src','http://example.com/loadimg.php?img=3'); 
}); 

我需要显示不同的错误信息如果用户无法加载图像,因为他的会话是否过期或他试图加载的图像不存在。

我在哪里可以从处理程序中找到eventObject中的响应标头和/或状态代码?

谢谢。

jsfiddle

+0

你不能得到一个请求的报头由于改变了元素的'src'属性,所以由浏览器在内部完成。相反,您需要自己完成一个AJAX调用,以BLOB格式(以字符串形式)返回想象,如果出现错误,则可以获取生成的错误代码。 –

回答

2

如果塔顶是不是太多了,你可以发送HEAD请求,即可看到返回出错的情况下,什么

var http = new XMLHttpRequest(); 
http.open('HEAD', url, true); // True is for async 
http.send(); 
if (http.status == 404) { 
    // 
} else if (http.status == 403) { 
    // 
} else { 
    // 
} 
+0

谢谢,我会用这样的东西。 $就({ 类型: “HEAD”, 异步:真, 网址:IMGSRC, 完成:功能(jqXHR,文本){ 的StatusCode = jqXHR.status; \t } }); –