誰でも助言を提供できますか?IEとjavascriptとバイナリデータ
私はバイナリデータを受信し、それをバックエコー表示、非常に単純なサーバーサイドのNode.jsの機能を持っている:
function OnButton3()
{
var buffer = new ArrayBuffer(8 + 2);
var dataview = new DataView(buffer);
dataview.setFloat64(0, 3.4, false);
dataview.setInt16(8, 7 , false);
AJAXSendBinaryData(AJAXGetRequestObject(), "[URL HERE]/SetBinaryData", "args=1,2,3", dataview, OnServerBinaryCallCompleted, 9, false);
}
を次のように
app.post('/SetBinaryData', function(req, res)
{
var echo = new Buffer(0);
req.on('data', function (data)
{
echo = Buffer.concat([echo,data]);
});
req.on('end', function()
{
res.end(echo);
});
}
);
私は、ボタンのクリック時にクライアント側から呼び出します(私の機能AJAXSendBinaryDataに包まれた)
私のAJAX呼び出しは次の属性があります。
ajaxRequestObject.open('POST', szURL, true);
ajaxRequestObject.responseType = "arraybuffer";
ajaxRequestObject.setRequestHeader('Content-Type', 'application/octet-stream');
とのonload関数が含まれています
ajaxRequestObject.onload = function(oEvent)
{
var arrayBuffer = ajaxRequestObject.response;
if(arrayBuffer)
{
var dataView = new DataView(arrayBuffer);
OnCallCompleted(dataView);
}
}
OnCallCompleted方法は次のとおりです。
function OnServerBinaryCallCompleted(dataview)
{
var value1 = dataview.getFloat64(0);
var value2 = dataview.getInt16(8);
alert(dataview.byteLength);
alert(value1.toString() + "\n" + value2.toString());
}
これは、Firefox、オペラ、Chromeで動作します。
私が '10'(Iは、送信されたバイトの数)の最初の警告を見ると、私はメッセージ3.4と7
参照BUTは、Internet Explorer 11には、私はない10が、15(かかわらずの参照
var data = [253.432, 0.432, 128.654, 1.456];
var dataview = new Float64Array(data);
て、それを送信し、コールバックにちょうど配列としてそれを扱うすべてがオンにもある:どのくらいのデータIが送信)
(注私は、データを定義した場合、役立つかもしれませんすべてのブラウザ。しかし、私はデータ型を混ぜたい)。
ありがとうございました。 Mitch。