我希望能够将HTML表导出到csv文件。请参阅以下代码:
HTML表格:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"> </script>
<script type="text/javascript" src="function.js"> </script>
</head>
<body>
<div class="dataExport">
<button id='export' type="button">Export</button>
</div>
<table class="analysisTable">
<thead>
<tr>
<th>First name</th>
<th>Last name</th>
<th>Age</th>
<th>Sex</th>
</tr>
</thead>
<tbody>
<tr>
<td>Jane</td>
<td>Doe</td>
<td>19</td>
<td>F</td>
<tr>
<td>John</td>
<td>Doe</td>
<td>41</td>
<td>M</td>
</tbody>
</table>
</body>
</html>
function.js
$( document ).ready(function() {
$("#export").click(function(){
var myTableArray = [];
$("table.analysisTable tr").each(function() {
var arrayOfThisRow = [];
var tableData = $(this).find('td');
if (tableData.length > 0) {
tableData.each(function() {
arrayOfThisRow.push( $(this).text() );
});
myTableArray.push( arrayOfThisRow );
}
});
$.ajax({
type: "POST",
url: "test_export.php",
data: { data: JSON.stringify(myTableArray) },
cache: false,
response: function(response) {
console.log("Response: " + response);
},
success: function(success) {
console.log("Succes: " + success);
},
error: function(error){
console.log("Error: " + error);
}
});
});
});
export.php
<?php
header('Content-Encoding: UTF-8');
header('Content-Type: application/excel; charset=UTF-8');
header('Content-Disposition: attachment; filename="export.csv"');
$fp = fopen('php://output', 'w') or die ("fopen failed");
$array = json_decode($_POST['data']);
foreach ($array as $row){
$row = array_map("utf8_decode", $row);
//print_r ($row);
fputcsv($fp, $row, ';');
};
fclose($fp);
?>
单击按钮时,此代码会正确解析HTML表的内容,但会将所有内容打印到控制台:
Succes: Jane;Doe;19;F
John;Doe;41;M
我已经在这里和其他地方搜索过,但我无法弄清楚如何说服php脚本编写创建csv文件。我在这里做错了吗?
编辑: 我最终想要实现的是:我想从HTML表中获取数据(我想通过使用javascript),在PHP中使用这些数据进行进一步处理(数据库内容)并将最终结果下载为一个csv文件。