Maison >interface Web >js tutoriel >Pourquoi ne pouvez-vous pas utiliser jQuery.ajax pour récupérer des images sous forme de blobs ?
Vous essayez de récupérer une image à l'aide de jQuery.get, de la stocker dans un Blob et de la télécharger sur un autre serveur. Cependant, la non-concordance des types de données entraîne la corruption des images.
Pourquoi ne pouvez-vous pas utiliser jQuery ajax pour récupérer des images sous forme de blobs ?
jQuery.ajax ne prend pas en charge la récupération d'images sous forme de blobs.
Solution
Pour récupérer une image sous forme de blob, vous devez utiliser XMLHttpRequest natif :
var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ if (this.readyState == 4 && this.status == 200){ //this.response is what you're looking for handler(this.response); console.log(this.response, typeof this.response); 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();
Mise à jour pour jQuery 3
Depuis jQuery 3, il est possible de récupérer des images sous forme de blobs en utilisant jQuery.ajax :
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(){ } });
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!