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

时间:2010-03-26 13:00:12

标签: jquery ajax

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

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

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

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

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

1 个答案:

答案 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传输的其他格式(或在必要时使用其他传输协议),具体取决于您要执行的操作。