在上一個問題中,您嘗試在 POST 請求中提交影像資料。您目前的方法涉及使用 jQuery.ajax 檢索圖像,但由於資料類型不匹配,您遇到了損壞的圖像。
有限的 jQuery 資料類型
jQuery.ajax支援多種資料類型,但不明確包含影像。因此,單獨使用 jQuery 將映像作為 blob 存取是不可行的。
原生 XMLHttpRequest 解決方案
要解決此問題,您可以使用原生 XMLHttpRequest。以下是一個範例:
var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var img = document.getElementById('img'); var url = window.URL || window.webkitURL; img.src = url.createObjectURL(this.response); } } xhr.open('GET', 'http://jsfiddle.net/img/logo.png'); xhr.responseType = 'blob'; xhr.send();
此腳本將建立一個 XMLHttpRequest 對象,將其配置為接收 Blob 回應,並使用 Blob URL 屬性在 HTML 元素中顯示圖像。
jQuery 3 解
在jQuery 3 中,提供了一種新方法:
jQuery.ajax({ url:'https://images.unsplash.com/photo-1465101108990-e5eac17cf76d?ixlib=rb-0.3.5&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjE0NTg5fQ%3D%3D&s=471ae675a6140db97fea32b55781479e', cache:false, xhr:function(){// Seems like the only way to get access to the xhr object var xhr = new XMLHttpRequest(); xhr.responseType= 'blob' return xhr; }, success: function(data){ var img = document.getElementById('img'); var url = window.URL || window.webkitURL; img.src = url.createObjectURL(data); }, error:function(){ } });
在此範例中,xhr 函數用於配置XMLHttpRequest 對象,並且回應類型明確設定為“blob”。這允許 jQuery 以 blob 形式檢索圖像並將其顯示在圖像元素中。
以上是如何使用 jQuery 和 JavaScript 以 Blob 形式檢索映像?的詳細內容。更多資訊請關注PHP中文網其他相關文章!