在IE8中发布二进制数据

时间:2016-01-14 04:25:19

标签: ajax post internet-explorer-8 bytearray

我正在尝试将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?

0 个答案:

没有答案