Maison  >  Article  >  interface Web  >  Méthode Ajax pour envoyer et recevoir des données de flux d'octets binaires

Méthode Ajax pour envoyer et recevoir des données de flux d'octets binaires

亚连
亚连original
2018-05-23 17:34:405370parcourir

Cet article présente principalement la méthode d'envoi et de réception de données de flux d'octets binaires par Ajax. Il est très bon et a une valeur de référence. Les amis intéressés devraient y jeter un œil ensemble

Dans HTML5 Ajax 2.0. standard, améliorations Il possède de nombreuses fonctions d'Ajax, notamment l'envoi de données FormData, le téléchargement de la barre de progression des données et de nombreuses autres fonctions. Mais en fait, Ajax peut envoyer des données binaires par octets.

Envoyer des données binaires

var oReq = new XMLHttpRequest();
oReq.open("POST", url, true);
oReq.onload = function (oEvent) {
// Uploaded.
};
var blob = new Blob(['abc123'], {type: 'text/plain'});
oReq.send(blob);

ou

var myArray = new ArrayBuffer(512);
var longInt8View = new Uint8Array(myArray);
for (var i=0; i< longInt8View.length; i++) {
longInt8View[i] = i % 255;
}
var xhr = new XMLHttpRequest;
xhr.open("POST", url, false);
xhr.send(myArray);

Recevoir des données binaires

var oReq = new XMLHttpRequest();
oReq.open("GET", "/myfile.png", true);
oReq.responseType = "arraybuffer";
oReq.onload = function (oEvent) {
var arrayBuffer = oReq.response; // Note: not oReq.responseText
if (arrayBuffer) {
var byteArray = new Uint8Array(arrayBuffer);
for (var i = 0; i < byteArray.byteLength; i++) {
}
}
};
oReq.send(null);

Bien sûr, les paramètres ci-dessus ne peuvent être que de type texte. S'il s'agit de type Blob, les opérations suivantes peuvent être effectuées

var oReq = new XMLHttpRequest();
oReq.open("GET", "/myfile.png", true);
oReq.responseType = "arraybuffer";
oReq.onload = function(oEvent) {
var blob = new Blob([oReq.response], {type: "image/png"});
// ...
};
oReq.send();

ou

var oReq = new XMLHttpRequest();
oReq.open("GET", "/myfile.png", true);
oReq.responseType = "blob";
oReq.onload = function(oEvent) {
var blob = oReq.response;
// ...
};
oReq.send();
Si vous utilisez une ancienne version du navigateur, le chargement du binaire peut être comme suit

function load_binary_resource(url) {
var req = new XMLHttpRequest();
req.open(&#39;GET&#39;, url, false);
//XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]
req.overrideMimeType(&#39;text\/plain; charset=x-user-defined&#39;);
req.send(null);
if (req.status != 200) return &#39;&#39;;
return req.responseText;
}
Remarque : x-user-defined indique au navigateur de ne pas analyser les données

Ce qui précède est ce que j'ai compilé. Pour tout le monde, j'espère que cela sera utile à tout le monde à l'avenir.

Articles connexes :

Utilisation de la technologie Ajax pour obtenir un rafraîchissement partiel de la quantité de produit et du code d'exemple de prix total

Solution parfaite pour l'accès ajax lorsque vous rencontrez un problème de session invalide

La raison pour laquelle la valeur interne ajax ne peut pas être appelée en externe et la solution

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn