IE, javascript和二进制数据
IE and javascript and binary data
谁能给点建议呢?
我有一个非常简单的服务器端node.js函数接收二进制数据,只是回显它:
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);
});
}
);
我在客户端点击按钮时调用它,如下所示:
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);
}
我的AJAX调用(包装在我的函数AJAXSendBinaryData)有以下属性:
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, Opera, Chrome。
我看到第一个警告'10'(我发送的字节数),然后我看到消息3.4和7。
但是,在Internet Explorer 11中,我看到的不是10而是15(不管我发送了多少数据)
(注意,如果我将数据定义为:
可能会有所帮助)var data = [253.432, 0.432, 128.654, 1.456];
var dataview = new Float64Array(data);
并发送那个,在回调中把它作为一个数组处理然后在所有浏览器上都没问题。但我想混合数据类型)。
谢谢你的建议。米奇。
解决。IE的Bug。修复发送ArrayBuffer对象到AJAX请求而不是DataView对象。现在可以在所有浏览器上运行
米奇。
相关文章:
- 如何处理从条形码扫描仪返回的二进制数据
- 将图像文件存储在猫鼬模式中的二进制数据中,并以html形式显示图像
- 二进制数据的可移植hashCode实现
- Javascript-将类型化数组保存为blob,并作为二进制数据读回
- 获取二进制数据并将其保存为.mp3文件Javascript
- 二进制数据的createObjectUrl失败
- 将数据结构转换为二进制数据
- 将二进制数据发送到服务器
- 将通过 AJAX 上传的二进制数据保存在 PHP 服务器上
- 如何在IE9中读取二进制数据
- 如何将二进制数据映射到javascript中的字符
- Base64解码不适用于二进制数据
- 如何在Firefox中使用xmlhttprequest和二进制数据,例如图像
- 通过HTTP请求将二进制数据上传到AppEngineBlobstore
- 为什么在Web套接字中使用二进制数据
- 在将图像作为原始图像二进制数据(png或jpeg)上传到服务器之前,裁剪或调整图像大小
- 如何在不编码或保存数据的情况下将二进制数据从javascript传递到actionscript(网页到flash)
- 使用牛仔和MessagePack通过websocket发送二进制数据
- 如何在严格模式下将附件下载为二进制数据
- 如何在浏览器中显示单词/ pdf二进制数据