通过$ .ajax发送UInt8Array

时间:2014-07-31 14:02:37

标签: javascript jquery ajax

我尝试将压缩数据发送到服务器。为此,我尝试将其作为UInt8Array传递给jQuery的ajax函数。我的基础是related answer

但它没有奏效。当我通过Wireshark查看内容时,我发现它已经尝试对它执行.toString(),得到" [object Uint8Array]"。关于这方面的其他信息很少。

var dataCompressed = LZW.compressToByteArray(data);
  $.ajax({
     data: dataCompressed,
     processData: false,
     contentType: "application/octet-stream",
     url: window.localStorage.getItem('servername') + '/Form/SaveData2?formId=' + results.rows.item(x).id,
     headers: { 'Authorization': 'Basic ' + credentials },
     type: "POST",
     async: true,
     success: function (data) {
     }
  });

2 个答案:

答案 0 :(得分:1)

在jQuery尝试为您转换之前,您需要序列化ArrayBuffer。可以看到一些如何执行此操作的示例here

答案 1 :(得分:1)

尝试创建 Blob

var blob = new Blob([dataCompressed], {type: "application/octet-stream"});
// ...
    data: blob,

如果 jQuery 仍在处理此错误,您可以将其放入 FormData

var fd = new FormData();
fd.append('post_field_name', blob, 'optional_file_name');
// ...
    data: fd,

以其中一种方式实现这一目标实际上是"使用 AJAX发布文件 "


我没有使用 jQuery ,所以我假设上述其中一项工作我还没有测试过。您可能会发现 jQuery 不支持发布此类数据,并且必须转移到 vanilla 解决方案