ajax的返回值类型:
- "xml": 返回 XML 文档,可用 jQuery 处理。
- "html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
- "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
- "json": 返回 JSON 数据 。
- "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
- "text": 返回纯文本字符串
二进制类型的返回值没有,经过查询资料,ajax是基于xhr1的,xhr2中可以返回arraybuffer类型,所以需要使用原生的javascript代码;
代码如下:
xhr=new XMLHttpRequest();
xhr.open('get',url,true);
xhr.responseType='arraybuffer';
xhr.send();
xhr.onreadystatechange = function () {
if(xhr[index].readyState === 4 && xhr[index].status === 200){
var uInt8Array = new Uint8Array(this.response);
}
}
此时可以从servlet中传递字节数组到js页面。
注意这里只能选择异步方式,当选择同步方式的时候会报错,经过查询资料,xhr2的同步方式是不可以的指定 xhr.responseType,所以当需要从后台循环读取字节的时候,选择匿名函数的方式;
var xhr = [];
for (var index = 0; index < rows*columns; index++){
(function (index){
xhr[index]=new XMLHttpRequest();
xhr[index].open('get',url,true);
xhr[index].responseType='arraybuffer';
xhr[index].send();
xhr[index].onreadystatechange = function () {
if(xhr[index].readyState === 4 && xhr[index].status === 200){
var uInt8Array = new Uint8Array(this.response);
……
pixelArray[index] = new Int16Array(data1.buffer);
}
}(index);
}
此时成功将字节数组传到前台。