2016-10-05 9 views
0

誰でも助言を提供できますか?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。

答えて

0

解決済み。 IEのバグ。 ArrayBufferオブジェクトをDataViewオブジェクトではなくAJAX要求に送信して修正しました。すべてのブラウザで動作します。

ミッチ。

関連する問題