JQuery.AJAX - 我的服务器可以返回一大块数据吗?

Kyl*_*yle 7 ajax jquery

对于JQuery.AJAX函数的dataType选项,我没有看到字节数组或blob作为可能性之一.

我如何得到它,以便我的服务器可以返回一个字节数组作为AJAX调用的结果?

我可以将blob转换为文本,但我要求紧凑.

编辑:blob不会显示给用户.我的javascript将查看它并从中创建一个对象.它大约是一个50kb的blob,速度很重要,所以如果我不需要,我不想添加任何臃肿.

编辑:我的数据是一个整数数组.Base64编码是可能的,但我不想添加膨胀.如果没有办法做到这一点,我想我只会对它进行Base64编码.

jus*_*tkt 3

编辑:根据评论讨论,我想修改我的答案。如果您传递一个整数数组,并且可以在服务器端将其转换为该格式,那么您绝对应该将其转换为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 传输的其他格式(或在必要时使用其他传输协议),具体取决于您想要执行的操作。