Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用PHP下载CSV文件_Javascript_Php_Csv_Export_Downloadfile - Fatal编程技术网

Javascript 使用PHP下载CSV文件

Javascript 使用PHP下载CSV文件,javascript,php,csv,export,downloadfile,Javascript,Php,Csv,Export,Downloadfile,当我点击导出按钮时,我想下载从php文件中获得的数据。唯一的问题是:当我按下按钮时,文件csv文件被生成,但它说:文件无法打开,失败 HTML代码: <form id="form" method="POST"> <button id="export" name="export_btn" onclick="export_data();"><i class=&

当我点击导出按钮时,我想下载从php文件中获得的数据。唯一的问题是:当我按下按钮时,文件csv文件被生成,但它说:文件无法打开,失败

HTML代码:

<form id="form" method="POST"> 
     <button id="export" name="export_btn" onclick="export_data();"><i class="fa fa-download" aria-hidden="true"></i> Export To CSV-File</button> <!--Export Btn: genereerd een csv file-->
</form>
PHP代码-export_measurement.PHP:

<?php
include_once("./conn.php"); //connectie file includen

$arr = json_decode($_POST['arr']); //array dat werd doorgestuurd vanuit 'insert_data_measurements.php' en gegoten werd in een JSON formaat, gaan decoderen en opslagen in variabele $arr


header('Content-Type: text/csv; charset=utf-8');  
header('Content-Disposition: attachment; filename=airflow.csv'); 

 for($i = 0; $i < sizeof($arr); $i++){ // door alle aangevingte rijen loopen en deze exporteren

      $output = fopen("php://output", "w");
      fputcsv($output, array('ID', 'ID_meting', 'Name_meting', 'Timestamp', 'Sensor_01', 'Sensor_02', 'Sensor_03', 'Sensor_04', 'Sensor_05', 'Sensor_06', 'Sensor_07', 'Sensor_08', 'Sensor_09', 'Sensor_10', 'Sensor_11', 'Sensor_12', 'Sensor_13', 'Sensor_14', 'Sensor_15', 'Sensor_16'));    
      $query = "SELECT * FROM metingen WHERE ID_meting=$arr[$i]";  
      $result = mysqli_query($conn, $query);  
      while($row = mysqli_fetch_assoc($result)) {  
           fputcsv($output, $row);  
      }  
      
}

fclose($output);    
?>

由于您正在执行POST,因此只需从PHP代码返回文件内容,在成功事件中,执行以下操作:

var encodedUri = encodeURI(data);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "airflow.csv");
document.body.appendChild(link); // Required for FF

link.click();

哦,等等,你想要一个文件保存对话框吗?不要使用$。ajax@JaromandaX我能做什么呢?因为你需要使用POST方法,你要么需要捕获数据,然后使用库之类的东西来启动下载,或者伪造一个表单,连同表单数据一起提交,但是你不能使用JSON@JaromandaX是否可以编辑我的代码并向我演示如何操作,因为我真的不知道如何操作。您尝试过检查此错误发生的位置吗?我找不到您在代码中提到的错误字符串当我按下按钮时,它说,“文件无法下载,失败-禁止”什么浏览器@DarkFelcore@JaromandaX我尝试了Edge、Chromium Linux和Chrome。它们都不起作用。请尝试上述方法,但使用我在评论中建议的fileSaver库
var encodedUri = encodeURI(data);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "airflow.csv");
document.body.appendChild(link); // Required for FF

link.click();