我试图将多维Javascript数组保存为服务器上的CSV文件。到目前为止,我的代码创建了CSV文件,但该文件不包含我的数组,我不知道为什么。
(其中outputData已建立)
function dataSave(){
outputStr = JSON.stringify(outputData);
$.ajax({
type: "POST",
url: "csvout.php",
data: outputStr,
dataType: 'html',
});}
csvout.php:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<?php
$array = json_decode($_POST['outputStr']);
$file = fopen("out/data.csv","w");
foreach ($array as $line){
foreach ($line as $item){
fputcsv($file,explode(',',$item));
}
}
fclose($file);
?>
</head>
<body>
</body>
</html>
数据是一个像这样的阵列数组 - 它是从参与科学实验的客户端获得的数据。一切都是一个字符串。
0: "tuba.mp3"
1: "prac"
2: "1"
3: "0"
4: "type1"
5. "500"
0: "clap.mp3"
1: "main"
2: "0"
3: "0"
4: "type1"
5. "300"
[...]
答案 0 :(得分:1)
您正在传递原始JSON字符串作为查询参数,但尝试将其作为命名参数进行访问。更新的代码:
function dataSave(){
outputStr = JSON.stringify(outputData);
$.ajax({
type: "POST",
url: "csvout.php",
data: { outputStr: outputStr },
dataType: 'html',
});}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<?php
$array = json_decode($_POST['outputStr']);
adding var_dump($array); here produces NULL
$file = fopen("out/data.csv","w");
foreach ($array as $line){
fputcsv($file,$item);
}
fclose($file);
?>
</head>
<body>
</body>
</html>