萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> ajax中獲取和發送二進制數據的方法

ajax中獲取和發送二進制數據的方法

   用ajax從服務器端獲取二進制時, 需要用overrideMimtType設置request頭,讓浏覽器不要修改讀取的的數據,方法如下:

  var xhr = new XMLHttpRequest();

  xhr.onreadystatechange = function(){

  if (xhr.readyState=== 4 && xhr.status === 200){

  var imgdata = xhr.response;

  }

  }

  xhr.open("GET",url,true);

  xhr.overrideMimeType("text/plain; charset=x-user-defined");

  xhr.send(null);

  另外要用xhr.response來獲得二進制數據,而不是responseText。

  如果需要通過ajax的POST發送二進制數據,在發送前需要將二進制數據的高位變為0,通常在XMLHttpRequest中增加一個方法來實現:

  XMLHttpRequest.prototype.sendAsBinary = function(datastr) {

  function byteValue(x) {

  return x.charCodeAt(0) & 0xff;

  }

  var ords = Array.prototype.map.call(datastr, byteValue);

  var ui8a = new Uint8Array(ords);

  this.send(ui8a.buffer);

  }

  var bindata = 二進制數據;

  xhr.open("POST", url);

  xhr.sendAsBinary(bindata);

copyright © 萬盛學電腦網 all rights reserved