ajax 接受二进制图片

今天后台的跟我说ajax交互用户头像接口,我想这不难做呗,刷刷刷写完了,哎图片呢,怎么回事,

这里我们前后端省略了status == 200这个判断

//图片接口
$.ajax({
type:"get",
url:"http://www.miereco.com/dashboard.php",
async:false,
data:{image:useid},
success:function(msg){
$(".head img").attr("src","http://www.miereco.com/dashboard.php?image="+useid);
console.log(msg);
},
error:function(msg){
// alert("407")
}

});

检查一下,我代码没问题啊; 难道是post方法还是别的问题,检查下后端给我的接口api,都没问题啊, F12打开浏览器开发者工具看下,  这什么东西, 怎么img src= “**********此处为乱码,我就不贴出来了,我相信看到这篇博客的应该也知道什么叫乱码” , 此时的我还不会二进制数据, 我就找后端的问了一下怎么都是乱码 ,他跟我说这是二进制的图片 ,让我转换成图片就好了, 我此时也似懂非懂,  “噢, 我回去试试”; 开始百度什么叫二进制,二进制图片,二进制转换器一顿百度下来,还是不太懂 , 算了看看jq有没有转换的代码, 发现jq没有ajax进制流数据交互, 那就再看看js,一搜 还挺多, 先看下代码了解下作者思路,哦哦哦这么回事啊, 按百度的来,最后成功了,代码如下:

var url = "http://www.miereco.com/dashboard.php?image=100001";  "这里是在地址栏可以查看的图片链接"
    var xhr = new XMLHttpRequest();  
    xhr.open('GET', url, true);                                                                        
    xhr.responseType = "blob";  
    //xhr.setRequestHeader("client_type", "DESKTOP_WEB");  
    //xhr.setRequestHeader("desktop_web_access_key", _desktop_web_access_key);  
    xhr.onload = function () {  
            var blob = this.response;  
            var img = document.createElement("img");  
            img.onload = function (e) {  
                window.URL.revokeObjectURL(img.src);  
            };  
            img.src = window.URL.createObjectURL(blob);  
            $(".head").html(img);    
    }  
    xhr.send();  


你可能感兴趣的:(js)