我正在尝试将压缩数据发送到服务器。为此,我尝试将其作为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) {
}
});发布于 2014-07-31 22:12:04
您需要序列化ArrayBuffer,然后jQuery才会尝试为您转换它。如何做到这一点的一些例子可以在here中看到。
发布于 2014-07-31 22:32:51
尝试创建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实现POSTing文件”。
我不使用jQuery,所以当我假设上面的作品之一时,我没有测试过它。您可能会发现jQuery不支持像这样发布数据,因此必须迁移到普通解决方案
https://stackoverflow.com/questions/25060907
复制相似问题