对于
JQuery.AJAX函数的dataType选项,我没有看到字节数组或blob作为可能性之一.
我如何得到它,以便我的服务器可以返回一个字节数组作为AJAX调用的结果?
我可以将blob转换为文本,但我要求紧凑.
编辑:blob不会显示给用户.我的javascript将查看它并从中创建一个对象.它大约是一个50kb的blob,速度很重要,所以如果我不需要,我不想添加任何臃肿.
编辑:我的数据是一个整数数组. Base64编码是可能的,但我不想添加膨胀.如果没有办法做到这一点,我想我只会对它进行Base64编码.
解决方法
编辑:根据评论讨论,我想修改我的答案.如果你传递一个整数数组,并且可以在服务器端获得它的格式,那么你应该把它变成
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传输的其他格式(或者在必要时使用其他传输协议),具体取决于您尝试执行的操作.