2016-03-07 139 views
1

我正试图通过ajax通过下面的代码加载图像,它已经在工作。我试图将它转换为角度$http,它不起作用。

平原Ajax代码

var xhr = new XMLHttpRequest(); 
xhr.open('GET', attr.imageUrl, true); 
xhr.responseType = 'blob'; 
xhr.onload = function(e) { 
    element[0].src = window.URL.createObjectURL(this.response); 
}; 

xhr.send(); 

角码

$http.get(attr.imageUrl, {}, { 
    responseType: 'arraybuffer' 
}) 
.success(function(response) { 
    var file = new Blob([response]); 
    element[0].src = URL.createObjectURL(file); 
}); 
+0

什么是你的'response'对象是什么样子? Angular将响应放在'response.data'中 –

+0

这篇文章可能会有帮助 - https://docs.angularjs.org/api/ng/service/$http – john

回答

1

我觉得应该是:

$http.get({ url: attr.imageUrl, responseType: 'arraybuffer'}) 
.success(function(response) { 
    var file = new Blob([response]); 
    element[0].src = URL.createObjectURL(file); 
}); 

或者:

$http.get(attr.imageUrl, {responseType: 'arraybuffer'}) 
.success(function(response) { 
    var file = new Blob([response]); 
    element[0].src = URL.createObjectURL(file); 
}); 
+0

我们的代码都是一样的....我不会看到有什么区别 – aWebDeveloper

+0

第一个是'$ http.get(config)'第二个是'$ http.get(url,config)' –

1

试试这个:

$http.get(attr.imageUrl, {responseType: 'arraybuffer'}) 
    .then(function(response) { 
    var file = new Blob([response]); 
    element[0].src = URL.createObjectURL(file); 
    }); 
+0

我们两个代码都是一样的....我没有看到任何区别,除了使用then – aWebDeveloper

+0

区别是你的参数,你有这个:'$ http.get(attr.imageUrl,{},{responseType:'arraybuffer'})',你不需要第二个参数'{} –

0

尝试这个 -

$http.get(attr.imageUrl, {responseType: 'arraybuffer'}) 
    .then(function(response) { 
    var file = new Blob([response.data], { 
        type: 'application/octet-binary' 
       }); 
    element[0].src = URL.createObjectURL(file); 
    });