我尝试将压缩数据发送到服务器。为此,我尝试将其作为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) {
}
});
答案 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 解决方案