php - 使用 Jquery、PHP 的 Ajax 文件下载

标签 php jquery ajax

我想使用 ajax 功能进行下载,用户将单击下载链接,该链接将(使用 ajax 和 $_GET)访问 PHP 文件,该文件将处理发送的 $_GET 变量并访问正确的文件进行下载。

我有一些 PHP 脚本来处理 $_GET 变量的处理,这些变量可以自行工作,但是当使用 Ajax 访问时,它们会停止工作。

我使用的 Ajax/PHP 代码如下:

function ajaxDown(){
$('#downloadmsg').html(
    '<img src=\"media/images/ajaxloader.gif\" width=\"128\" height=\"15\">');
$('#downloadmsg').load(
'media/downloads/downManager.php?file=".$filequery['filename']."&ftype=".$downex[1]."');
}

请查看我的代码并帮助我找出我做错了什么。

感谢

最佳答案

我认为问题在于您正在尝试将文件结果加载到 #downloadmsg 中,这是行不通的,因为 .load() 只会将结果加载为 HTML...而不是二进制数据或其他编码。

一种可行的方法是在 HTML 中创建一个隐藏的 iframe,如下所示:

<iframe id="secretIFrame" src="" style="display:none; visibility:hidden;"></iframe>

然后,将 iframe 的 attr 设置为您的查询字符串:

$("#secretIFrame").attr("src","myphpscript.php?option1=apple&option2=orange");

然后在设置源时使用 PHP header 强制下载(这是我的一个使用八位字节流的脚本中设置的导出器 header 的示例):

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=data.xls ");
header("Content-Transfer-Encoding: binary ");

希望这会有所帮助!

关于php - 使用 Jquery、PHP 的 Ajax 文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3599670/

相关文章:

php - WordPress管理员ajax.php 404

javascript - 基于其他输入值通过 PHP 使用 jQuery AJAX 设置表单输入值

php - Yii2 authKey 的用途是什么?

php - symfony 1.4.15 错误与 php 7

php - 如何找到图像中的主色?

javascript - JQuery 文件上传,到哪里去了?

php - 阻止或清除 HTML/CSS 标签

javascript - 数据表:使用行分组,如何获取每个分组行的计数?

javascript - Bootstrap : how to use navbar?

jquery - 使用 jquery 悬停更改显示属性