对于JQuery.AJAX函数的dataType选项,我没有看到字节数组或blob作为其中一种可能性。
如何获取它,以便我的服务器可以返回一个字节数组作为AJAX调用的结果?
我可以将blob转换为文本,但我要求紧凑。
编辑:blob不会显示给用户。我的javascript将查看它并从中创建一个对象。它大约是一个50kb的blob,速度很重要,所以如果我不需要,我不想添加任何臃肿。
编辑:我的数据是一个整数数组。 Base64编码是可能的,但我不想添加膨胀。如果没有办法做到这一点,我想我只会对它进行Base64编码。
答案 0 :(得分:3)
编辑:根据评论讨论,我想修改我的答案。如果您传递的是整数数组,并且可以在服务器端将其转换为该格式,那么您应该完全将其转换为JSON。 JSON支持传递整数,jQuery很容易支持获取JSON。
一组int的示例JSON:
{
"array": [0, 1, 2, 3, 4, 5]
}
用于检索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
}
);
旧建议
虽然我同意上述评论者,但我认为应该可以这样做。有一个base64编码器/解码器jQuery plugin,可以帮助您传输数据。 (导致一点bloat,这是真的)。如果你对数组进行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.
}
);
您可能需要考虑查看更多通过HTTP传输的其他格式(或在必要时使用其他传输协议),具体取决于您要执行的操作。