【发布时间】:2019-10-17 13:14:55
【问题描述】:
我有以下问题:
我正在升级一个工作系统,所以我必须创建适合的代码。 我想在 php 页面和 mysql 数据库上创建一个 csv 文件。我还使用 Ajax 在运行其他 php 文件时保持在同一页面上。以下是代码 sn-ps:
带按钮的 PHP/HTML 页面
<div class="btn" id="export">Export</div>
Javascript Ajax
$("#export").click(function() {exportInfos();});
function exportInfos() {
$.ajax({
type: "POST",
url: "functions/exportInfos.php",
data: { searchterm: $("#search").val(), filterbycat: $("#filterbycat").val(), filterbytype: $("#filterbytype").val()},
success: function(response){
console.log("success_export");
},
});
}
PHP-File 创建 csv(exportInfos.php):
<?php
include ('../../config.php');
$searchterm = $_POST["searchterm"];
$filterbycat = $_POST["filterbycat"];
$filterbytype = $_POST["filterbytype"];
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename=export.csv');
$output = fopen("php://output", "w");
$query = "SELECT * FROM database";
$result = mysqli_query($mysqli, $query);
while($row = mysqli_fetch_assoc($result))
{
fputcsv($output, $row);
}
fclose($output);
?>
我不确定问题出在哪里,但在控制台中我只看到调用了 php 脚本和日志中的 success_export 文本,但没有打开或下载文件。我认为问题可能出在 AJAX 部分,因为那是我最不确定的部分。
只要我得到一些输出文件,Ajax 部分中的数据值就可以编辑查询。 $mysqli 是配置文件中定义的连接。
【问题讨论】:
-
success: function(response)您的文件位于response。让 javascript 显示保存对话框是一个不同的问题,您会发现很多问题询问如何执行此操作。浏览器会自动执行此操作,但您已将控制权从浏览器手中夺走。有关详细信息,请参阅副本。
标签: javascript php jquery mysql ajax