jQuery.post()如何处理Content-Disposition:attachment?
问题描述:
这里略显疯狂。jQuery.post()如何处理Content-Disposition:attachment?
$.post('php/print.php',{data:dS},function(res){... },"text");
我从print.php返回(作为测试)::
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=test.doc");
echo "<html>";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
echo "<body>";
echo "Testing-2-3!";
echo "</body>";
echo "</html>";
的数据通过细根据未来我如下制备使用jQuery.post调用Ajax Firebug,包括标题。但是,如何获取浏览器(在这种情况下,Firefox)提示用户保存附件?
谢谢。
答
这根本不可能。 AJAX请求永远不会导致用户提示。
但是,您可以简单地使请求返回例如包含URL的JSON或明文,然后使用location.href = ...;
重定向到它;这将导致你正在寻找的提示。
如果请求总是导致文件下载,您也可以考虑使用常规格式,而不是使用AJAX;如果响应触发下载对话框,则前一页仍将保留在浏览器窗口中。
答
为什么你不直接链接到print.php
,并使用此代码
调用PHP输出到浏览器$fp = fopen("php://output", 'w');
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=test.doc");
$fp = fopen("php://output", 'w');
fwrite($fp,"your content here");
fclose($fp);
你的内容类型不会出现在您的内容相匹配... – Quentin 2012-03-15 10:59:04