Jquery AJAX-我的服务器可以返回一个数据块吗?

Jquery AJAX-我的服务器可以返回一个数据块吗?,jquery,ajax,Jquery,Ajax,对于JQuery.AJAX函数的dataType选项,我不认为字节数组或blob是一种可能性 我如何获得它,以便我的服务器能够返回一个字节数组作为AJAX调用的结果 我可以将blob转换为文本,但我要的是紧凑性 编辑:blob不会显示给用户。我的javascript将查看它并从中创建一个对象。它大约是一个50kb的blob,速度很重要,所以如果不需要的话,我不想添加任何bloat 编辑:我的数据是一个整数数组。Base64编码是一种可能,但我不想添加膨胀。如果没有办法做到这一点,我想我还是用Ba

对于JQuery.AJAX函数的dataType选项,我不认为字节数组或blob是一种可能性

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

我可以将blob转换为文本,但我要的是紧凑性

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


编辑:我的数据是一个整数数组。Base64编码是一种可能,但我不想添加膨胀。如果没有办法做到这一点,我想我还是用Base64编码吧。

编辑:根据评论讨论,我想修改我的答案。如果您正在传递一个整数数组,并且可以在服务器端将其转换为该格式,那么您绝对应该将其转换为。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编码器/解码器可以帮助传输数据。(这是真的,引起了一些争议)。如果您对数组进行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(或必要时使用另一个传输协议)更频繁地传输其他格式,但取决于您尝试执行的操作。

您可能需要使用PHP或ASP将二进制数据“屏蔽”到一个普通文本文件中,然后由javascript解码。确实要这样做吗?使用blob的id(如果它在数据库中)然后将文件提供给用户,然后单击它,或者在id可用时通过其他方式呈现字节,不是更好吗?@Shervin我想操纵blob,并在检索到它后从中创建一个对象。它不会显示给用户。@Spines-如果您只想操作一个对象,那么JSON呢?它是一种相当紧凑的格式,可以很好地与Javascript配合使用。JSON可以作为文本使用。我想问的问题是:转换这些数据是否会影响客户端性能?如果是这样,请在服务器上处理它。您能给出一个将MIME类型设置为“application.octet stream”的示例吗?因此,如果我将MIME类型设置为application/octet stream,那么代码段中的
data
变量将包含它?
data
变量是否为byte-array类型?@thecoshman-我已经多年没有使用PHP了,所以我不确定如何在PHP中从服务器设置HTTP头。看起来Google搜索提供了指向PHP手册的指针来解释。@Spines-如果将MIME类型设置为application/octet stream,浏览器可能会尝试下载它-就像在弹出的“保存”对话框中一样-尽管它取决于用户设置。要以文本形式传递数据以使其在jQuery成功回调中结束,请将数组转换为字符串,对其进行base64编码,然后以文本/纯文本形式传递。在客户端,base64对其进行解码,然后您可以使用另一个StackOverflow答案中描述的过程来访问它:。要处理数据的代码应该在该函数中。字节数组的格式对我来说很有意义。