【问题标题】:jQuery download a csv file with link onclickjQuery 下载带有链接 onclick 的 csv 文件
【发布时间】:2017-03-28 06:07:21
【问题描述】:

我正在尝试使用 jquery 按钮 onclick 下载 CSV 文件。我有一个<a> 标签,ID 为export,我希望它指向下载链接,我可以在其中下载我刚刚创建的CSV 文件。

// Using this jquery to send my sql query to server-side-CSV
$('#export').on('click', function() {
  var sqlsend = dataTable.ajax.json().sql;
  $.post('server-side-CSV.php', 'val=' + sqlsend, function(request){
    //code should go here
  });
});

这是我创建 CSV 文件的 php 代码

// This is my server-side-CSV file. It's creating a csv file to     downloaded
<?php
require("connection.php");
$sql = $_POST['val'];
.
.more code
.

// loop over the rows, outputting them
while ($row = mysqli_fetch_assoc($rows)) fputcsv($output, $row);
fclose($output);
exit;
?>

如何下​​载 CSV 文件?

编辑: 终于找到答案了,

$('#export').on('click', function() {
  var sqlsend = dataTable.ajax.json().sql;
  window.location.href="server-side-CSV.php?val="+sqlsend;
});

【问题讨论】:

  • 要么使用表单,要么打开弹出窗口,要么使用data URIs
  • 如果我使用 URI,那么我如何能够将“sqlsend”变量发送到我的 php 文件?对不起,对这一切都很陌生。
  • 你的request是要下载的文件吗?
  • alert(request) 给了我所有需要下载的数据。

标签: javascript php jquery html csv


【解决方案1】:

而不是$.post,将浏览器发送到下载位置:

document.location.href = 'server-side-CSV.php?val='+sqlsend;

您需要在循环之前添加标题。

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");

this answer

【讨论】:

  • 是的,我已经有了所有这些标题。 Stackoverflow 没有让我添加所有代码。
  • 我建议检查您的服务器端 CSV.php 文件是否适用于硬编码到其中的一些 SQL。直接从浏览器调用。
  • 是的,当我通过自己的 SQL 查询时,它工作得非常好。当我传递 sql 查询函数(请求)时,这个“请求”变量包含所有数据,但不显示任何下载弹出窗口。
  • 编辑了我的答案。
猜你喜欢
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 1970-01-01
相关资源
最近更新 更多