jQuery.post()如何处理Content-Disposition:attachment?

在这里略显疯狂。 我正在使用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 ""; echo ""; echo ""; echo "Testing-2-3!"; echo ""; echo ""; 

根据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);