我正在尝试将512字节的原始数据发送到带有Internet Explorer 8以太网屏蔽的Arduino。如果您还不知道,Arduino是一个非常小的微控制器,RAM非常有限(因此,无论Base64还是编码数据的URL都不是一个选项,或者堆栈都会溢出。
我需要在非常短的时间间隔内(大约100ms到250ms之间)快速发送这些数据。在一个POST请求体内,IE8(IE8,因为IE9 +不适用于Windows XP)不再需要512字节的原始,未编码,未处理的二进制数据。
此代码适用于FireFox
function PostDMXData(evt)
{
var buff=new ArrayBuffer(512);
var bytesArray=new Uint8Array(buff);
for(var i=0;i<512;i++)
{
bytesArray[i]=DMXData[i];
}
jQuery.ajax({
url: "dmxdata.php",
type: "POST",
async: true,
error: function(a,b,c){alert(c);},
complete: function(a,b)
{
if(evt){evt();}
},
contentType: "application/octet-stream",
data: bytesArray,
processData: false
});
delete buff;
delete bytesArray;
}
但不是在IE8中。错误函数内的alert(c)
显示&#34;错误:参数不正确。&#34;使用非最小化的jQuery,我发现它是由.send(...)
本身的XMLHttpRequest对象生成的异常。
我尝试使用2个不同的polyfill / shims作为Uint8Array数据类型,我在StackOverflow上找到了这个数据类型,但是看起来这些都没有兼容。
我应该继续寻找另一个Uint8Array垫片,放弃Ajax,还是应该尝试使用Ajax / jQuery?