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;}}});