对于JQuery.AJAX函数的dataType选项,我没有看到字节数组或blob作为可能性之一.
我如何得到它,以便我的服务器可以返回一个字节数组作为AJAX调用的结果?
我可以将blob转换为文本,但我要求紧凑.
编辑:blob不会显示给用户.我的javascript将查看它并从中创建一个对象.它大约是一个50kb的blob,速度很重要,所以如果我不需要,我不想添加任何臃肿.
编辑:我的数据是一个整数数组.Base64编码是可能的,但我不想添加膨胀.如果没有办法做到这一点,我想我只会对它进行Base64编码.
编辑:根据评论讨论,我想修改我的答案。如果您传递一个整数数组,并且可以在服务器端将其转换为该格式,那么您绝对应该将其转换为JSON。JSON 支持传递整数,jQuery 轻松支持获取 JSON。
整数数组的 JSON 示例:
{
"array": [0, 1, 2, 3, 4, 5]
}
Run Code Online (Sandbox Code Playgroud)
用于检索 JSON 的示例 Javascript/jQuery 代码:
$.getJSON('/url/to/binary/data/returning/json',
function(data) {
// access the array this way:
var array = data.array;
var first = array[0];
// so here you can do whatever your code needs with that array
}
);
Run Code Online (Sandbox Code Playgroud)
旧建议
虽然我同意上面的评论者的观点,但我相信应该可以做到这一点。有一个 base64 编码器/解码器jQuery 插件应该有助于传输数据。(造成一点膨胀,这是真的)。如果您对数组进行 Base64 编码,则应该能够传输它。
如果您只想下载二进制数据(而不是显示它),请将响应的 MIME 类型设置为 application/octet-stream 并提供附件名称以供适当的浏览器处理。
$.get('/url/to/binary/data',
function(data) {
// convert binary data to whatever format you would like to use here with
// an encoded string, have the browser download, call
// a helper function, etc.
}
);
Run Code Online (Sandbox Code Playgroud)
不过,您可能需要考虑查看更常通过 HTTP 传输的其他格式(或在必要时使用其他传输协议),具体取决于您想要执行的操作。