我想使用ajax功能下载,用户将点击下载链接(使用ajax和$ _GET)访问一个PHP文件,该文件将处理发送的$ _GET变量并访问正确的文件进行下载。
我有几个PHP脚本来处理$ _GET变量的处理工作,但是当使用Ajax进行访问时,它们停止工作。
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]."'); }
请查看我的代码,并帮助我找到我做错了什么。
感谢名单
我认为问题是你正在尝试加载一个文件结果INTO #downloadmsg,这不会工作,因为.load()只会加载结果作为HTML …不是二进制数据或其他编码。
一种可能起作用的方法是在HTML中创建一个隐藏的iframe,如下所示:
<iframe id="secretIFrame" src="" style="display:none; visibility:hidden;"></iframe>
然后,将iframe的attr设置为querystring:
$("#secretIFrame").attr("src","myPHPscript.PHP?option1=apple&option2=orange");
然后使用PHP头来强制下载源码(这里是一个使用八位字节流的脚本中的一个导出器头文件的示例):
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 ");
希望这可以帮助!