这里有点疯狂。我正在使用jQuery.post进行Ajax调用,如下所示:
$.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>";
根据Firebug的说法,数据处理得很好,包括标头。但是,我如何让浏览器(在本例中为Firefox)提示用户保存附件?
谢谢。
这根本不可能。AJAX请求从不引起用户提示。
然而,您可以简单地使请求返回,例如JSON或包含URL的明文,然后使用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);