【发布时间】:2016-04-06 17:11:52
【问题描述】:
我希望将 JS 中的数组转换为 Uint16Array,使用 AJAX POST,在 PHP 中接收,将 POST 转换为 PHP 数组。
到目前为止:
JS
var data = [];
for(var j = 0; j < 4800; j++) {
data.push(j);
}
bytesToSendCount = data.length;
var bytesArray = new Uint16Array(bytesToSendCount);
for (var i = 0, l = bytesToSendCount; i < l; i++) {
bytesArray[i] = data[i];
}
$.ajax({
type: "POST",
url: "index.php",
data: bytesArray,
contentType: 'application/octet-stream',
processData: false,
success: function(data){
console.log("ok");
},
failure: function(errMsg) {
alert(errMsg);
}
});
PHP
$data=file_get_contents('php://input');
如何将 $data 设置为 PHP 数组?也许将其转换为 ascii 字符串,而不是将其转换为数组?
编辑: 这个想法是让数据记录器以 40SPS 工作,并使用移动互联网将数据发送到服务器。发送 JSON 或字符串或二进制文件的问题,它消耗大量数据(每两分钟 24kb),因此使用 Uint16Array(记录器以 16 位工作)将 POST 减少到 ~9kb/2 分钟。
【问题讨论】:
-
不应该
$data = eval($data);做这个伎俩吗?如果没有,您在$data中究竟有什么? -
$data只是来自 AJAX (Uint16Array) 的帖子,使用 eval 我收到此消息syntax error, unexpected 'D8APxA' (T_STRING)。 -
嗯?你能做一个 var_dump($data) 并在这里发布这个输出吗?我真的不明白为什么会是 D8APxA 或类似的东西。
-
没有
eval的输出有点大,像这样:�������� -
不管怎样,我认为你需要在PHP中使用
unpack()来解析它。