0
两个相关的问题。从Rest API获取图像。 JQuery问题
(this is my jquery.js file)
$.ajax
({
type: "GET",
url: "url",
dataType: 'image/png',
async: false,
beforeSend: function (xhr) {
xhr.withCredentials = true;
xhr.setRequestHeader("Authorization", "Bearer xxxx");
},
success: function (data) {
document.getElementById("myImage").src = data; // (will be in next question)
console.log(data);
}
});
当我JSON数据,就会将数据放到通过的console.log铬控制台(开发工具)。然而,用PNG我没有看到任何数据。这让我担心,因为在图片中的请求响应我看到了二进制数据
�Ս-��tKn�v���6�k�˟>��������7�&=���+���?J�k�����y����L���m�(ψ/
,但我需要确保这是在数据变量,因为的.src =数据线。
这导致我的下一个问题....如果图像二进制数据是在“数据”变量,不应该它显示在我的HTML?
<html>
<head>
<script src="//code.jquery.com/jquery-2.0.0.min.js"></script>
<script src="jquery.js"></script>
</head>
<body>
<img id="myImage" src="" />
</body>
</html>
谢谢!
我的印象是我需要ajax调用,因为它需要授权的链接(不记名令牌) – k9b
除非您可以将流保存到某处,然后将的URL设置为该位置,否则您将不会能够对数据做很多事情。由于这是一个获取请求,因此您可以选择通过URL参数以其他方式传递身份验证令牌。 你的其他选择是让这个请求服务器端,在这种情况下,你将src属性设置为您的服务器上的终点,然后在那里您使用适当的授权标头向目标api发出请求,然后流回应给你的客户端 - 也就是说,如果你运行服务器端代码。 – hnafar
感谢评论hnafar,这是有道理的。我关心的是来自请求的二进制数据响应不被存储在“数据”变量中,对吗?或者它实际上是存储在那里,它只是没有打印与console.log – k9b