2016-04-11 14 views
1

Çok boyutlu bir Javascript dizisini sunucuda CSV dosyası olarak kaydetmeye çalışıyorum. Şimdiye kadar, kodum CSV dosyasını oluşturur, ancak dosya dizimi içermez ve neden emin değilim. Çok boyutlu Javascript dizisini sunucu tarafına kaydetme CSV

(OutputData kurulur burada)

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> 

Böyle diziler dizisi katılan istemci elde edilen 's verileri bölgesi varış veri bilimsel bir deneyde. Her şey bir dizedir.

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

Dizininizin nasıl görünebileceğine dair bir örnek alabilir miyiz? – apokryfos

+0

Re: fputcsv kullanarak ve aynı zamanda patlayabilir, ben bu cevabı ile biraz kafam karıştı çünkü bu bağlantıda her ikisini de kullanan örnek kod vardır ve işe yaramaktadır: http://www.w3schools.com/php/ func_filesystem_fputcsv.asp – Chris

+0

Soru etiketlerinize "jQuery" yazın; Kodunuzun ne hakkında olduğunu belirtirseniz daha az yardımcı olur ve daha az "aşağı oy" ile sonuçlanır. – argon

cevap

1

Ham bir JSON dizesini sorgu parametreniz olarak geçiriyorsunuz ancak adlandırılmış bir parametre olarak erişmeye çalışıyorsunuz. Güncel kod:

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> 
+0

Teşekkürler, bu işe yarar, ancak verileri, her yuvalanmış diziyi bir satır olarak değil, Excel'de açıldığında tek bir sütuna kaydediyor. Bunu düzeltmenin basit bir yolu olur muydu? – Chris

+0

Küçük bir güncelleme yaptım. Verilerinizin tam olarak nasıl göründüğünü hala bilmiyorum, ancak bu sadece bir dizi dizidir, bu işe yaramalıdır. – apokryfos

+0

Çok teşekkür ederim, çalışıyor! – Chris