Javascript 从映像错误处理程序读取响应头
我有一个Javascript 从映像错误处理程序读取响应头,javascript,jquery,javascript-events,http-headers,Javascript,Jquery,Javascript Events,Http Headers,我有一个属性是由Javascript定期更改的 当src属性更改时,服务器上的“我的代码”将检查: 用户是否已登录 这个图像存在吗 然后它相应地发送一个响应,要么是图像,要么是带有错误标题的响应(状态403禁止或404未找到) 我的问题是:我用以下代码处理img错误 $(function(){ var $img = $('#test_image'); $img.on('error',function(e){ // here, I need to read the
属性是由Javascript定期更改的
当src
属性更改时,服务器上的“我的代码”将检查:
用户是否已登录李>
这个图像存在吗
然后它相应地发送一个响应,要么是图像,要么是带有错误标题的响应(状态403禁止
或404未找到
)
我的问题是:我用以下代码处理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
中,哪里可以找到响应头和/或状态代码?
多谢各位
如果开销对您来说不是太大,您可以发送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 {
//
}
由于更改元素的src
属性,您无法从浏览器内部获取请求的标题。相反,您需要自己进行AJAX调用,以BLOB格式(作为字符串)返回imagine,如果出现错误,则可以生成错误代码。谢谢,我将使用类似的方法。$。ajax({type:“HEAD”,async:true,url:imgSrc,complete:function(jqXHR,text){statusCode=jqXHR.status;}}});